From f424b90afdeb96c1f5d43d7919e51c6c0c426bbb Mon Sep 17 00:00:00 2001 From: AkmalFairuz Date: Thu, 13 Feb 2025 10:42:17 +0700 Subject: [PATCH] 1.21.60 support --- README.md | 1 + example-proxy.go | 4 +- go.mod | 10 +- go.sum | 14 + .../0231_1.21.40.25_to_1.21.50.29_beta.json | 13 + legacyver/data/block_states_776.nbt | Bin 0 -> 2080267 bytes legacyver/data/item_runtime_ids_776.nbt | Bin 0 -> 164966 bytes legacyver/data/required_item_list_776.json | 8947 +++++++++++++++++ legacyver/item_translator.go | 160 +- legacyver/legacypacket/add_player.go | 2 +- legacyver/legacypacket/boss_event.go | 115 + .../legacypacket/camera_aim_assist_presets.go | 36 + .../legacypacket/client_cheat_ability.go | 24 + .../legacypacket/command_block_update.go | 88 + legacyver/legacypacket/creative_content.go | 53 + legacyver/legacypacket/item_registry.go | 25 + legacyver/legacypacket/start_game.go | 8 +- .../legacypacket/structure_block_update.go | 82 + legacyver/legacypacket/update_abilities.go | 23 + legacyver/proto/ability.go | 108 + legacyver/proto/camera.go | 10 + legacyver/proto/creative.go | 41 + legacyver/proto/id.go | 1 + legacyver/proto/item.go | 92 + legacyver/protocol.go | 162 +- legacyver/v766.go | 17 +- legacyver/v776.go | 25 + mapping/item.go | 35 +- 28 files changed, 10000 insertions(+), 96 deletions(-) create mode 100644 internal/item/schemas/0231_1.21.40.25_to_1.21.50.29_beta.json create mode 100644 legacyver/data/block_states_776.nbt create mode 100644 legacyver/data/item_runtime_ids_776.nbt create mode 100644 legacyver/data/required_item_list_776.json create mode 100644 legacyver/legacypacket/boss_event.go create mode 100644 legacyver/legacypacket/camera_aim_assist_presets.go create mode 100644 legacyver/legacypacket/client_cheat_ability.go create mode 100644 legacyver/legacypacket/command_block_update.go create mode 100644 legacyver/legacypacket/creative_content.go create mode 100644 legacyver/legacypacket/item_registry.go create mode 100644 legacyver/legacypacket/structure_block_update.go create mode 100644 legacyver/legacypacket/update_abilities.go create mode 100644 legacyver/proto/ability.go create mode 100644 legacyver/proto/creative.go create mode 100644 legacyver/proto/item.go create mode 100644 legacyver/v776.go diff --git a/README.md b/README.md index f4ecaf4..eb0d7a7 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ A gophertunnel protocol interface implementation to support older Minecraft Bedr ## Supported Versions | Protocol ID | Version | Support | |-------------|---------|---------| +| 776 | 1.21.60 | ✅ | | 766 | 1.21.50 | ✅ | | 748 | 1.21.40 | ✅ | | 729 | 1.21.30 | ✅ | diff --git a/example-proxy.go b/example-proxy.go index f623a35..f167f65 100644 --- a/example-proxy.go +++ b/example-proxy.go @@ -10,6 +10,7 @@ import ( "log" "os" "sync" + "time" ) // The following program implements a proxy that forwards players from one local address to a remote address. @@ -28,6 +29,7 @@ func main() { listener, err := minecraft.ListenConfig{ StatusProvider: p, AcceptedProtocols: []minecraft.Protocol{ + legacyver.New766(), legacyver.New748(), legacyver.New729(), legacyver.New712(), @@ -54,7 +56,7 @@ func handleConn(conn *minecraft.Conn, listener *minecraft.Listener, config confi serverConn, err := minecraft.Dialer{ TokenSource: src, ClientData: conn.ClientData(), - }.Dial("raknet", config.Connection.RemoteAddress) + }.DialTimeout("raknet", config.Connection.RemoteAddress, time.Second*100) if err != nil { panic(err) } diff --git a/go.mod b/go.mod index e4a39a5..6556e20 100644 --- a/go.mod +++ b/go.mod @@ -10,11 +10,11 @@ require ( github.com/pelletier/go-toml v1.9.5 github.com/rogpeppe/go-internal v1.13.1 github.com/samber/lo v1.47.0 - github.com/sandertv/gophertunnel v1.43.1 + github.com/sandertv/gophertunnel v1.44.1-0.20250211173944-b0dbda19ad6a github.com/segmentio/fasthash v1.0.3 golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 golang.org/x/image v0.21.0 - golang.org/x/oauth2 v0.24.0 + golang.org/x/oauth2 v0.26.0 ) require ( @@ -27,8 +27,8 @@ require ( github.com/klauspost/compress v1.17.11 // indirect github.com/muhammadmuzzammil1998/jsonc v1.0.0 // indirect github.com/sandertv/go-raknet v1.14.2 // indirect - golang.org/x/crypto v0.31.0 // indirect + golang.org/x/crypto v0.33.0 // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.33.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/net v0.35.0 // indirect + golang.org/x/text v0.22.0 // indirect ) diff --git a/go.sum b/go.sum index 91b058f..acaa0ff 100644 --- a/go.sum +++ b/go.sum @@ -49,6 +49,10 @@ github.com/sandertv/gophertunnel v1.43.1-0.20241229203958-5af8736ae319 h1:yxDqIv github.com/sandertv/gophertunnel v1.43.1-0.20241229203958-5af8736ae319/go.mod h1:XuEJo+ARim+NKiD90Z56sQRcDtCOErz26e2bt3LEd9I= github.com/sandertv/gophertunnel v1.43.1 h1:wY6Fy8dRMKtpZUQzCR35o9k05135vOJZhrz0GF6OXFI= github.com/sandertv/gophertunnel v1.43.1/go.mod h1:XuEJo+ARim+NKiD90Z56sQRcDtCOErz26e2bt3LEd9I= +github.com/sandertv/gophertunnel v1.43.2-0.20250207144337-b2857453171d h1:JK3btKqp1QUPWLfgXyTUaKa8wUHJnO0Z3jqdKebbNq0= +github.com/sandertv/gophertunnel v1.43.2-0.20250207144337-b2857453171d/go.mod h1:XuEJo+ARim+NKiD90Z56sQRcDtCOErz26e2bt3LEd9I= +github.com/sandertv/gophertunnel v1.44.1-0.20250211173944-b0dbda19ad6a h1:1dFrVCwemoApT79gWY0PMjMTjZooS553YNRvml6IA2Y= +github.com/sandertv/gophertunnel v1.44.1-0.20250211173944-b0dbda19ad6a/go.mod h1:XuEJo+ARim+NKiD90Z56sQRcDtCOErz26e2bt3LEd9I= github.com/segmentio/fasthash v1.0.3 h1:EI9+KE1EwvMLBWwjpRDc+fEM+prwxDYbslddQGtrmhM= github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -61,6 +65,8 @@ golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/image v0.0.0-20190321063152-3fc05d484e9f/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= @@ -80,10 +86,16 @@ golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.26.0 h1:afQXWNNaeC4nvZ0Ed9XvCCzXM6UHJG7iCg0W4fPqSBE= +golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -112,6 +124,8 @@ golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= diff --git a/internal/item/schemas/0231_1.21.40.25_to_1.21.50.29_beta.json b/internal/item/schemas/0231_1.21.40.25_to_1.21.50.29_beta.json new file mode 100644 index 0000000..18674d1 --- /dev/null +++ b/internal/item/schemas/0231_1.21.40.25_to_1.21.50.29_beta.json @@ -0,0 +1,13 @@ +{ + "remappedMetas": { + "minecraft:boat": { + "9": "minecraft:pale_oak_boat" + }, + "minecraft:chest_boat": { + "9": "minecraft:pale_oak_chest_boat" + }, + "minecraft:spawn_egg": { + "146": "minecraft:creaking_spawn_egg" + } + } +} \ No newline at end of file diff --git a/legacyver/data/block_states_776.nbt b/legacyver/data/block_states_776.nbt new file mode 100644 index 0000000000000000000000000000000000000000..7a34a251caf24b0c412c3698036f581240312e2a GIT binary patch literal 2080267 zcmdqK4UgnTvK`tr-Rfz#bVs9EX(Y{RwR`t|?AkEw`|i8%K0m=Q48t%C!!QiPFbu;m z&8lKoahpw+N!Ij?VEF&&Z|E24Cp;F})yb)@6Ujlx4gq>N>u@tm?Q}-w*ZEhgve@R!_AjGlS|*FSF(Goo zsG!d{kX~>Ez2pdb#S!$HBj{%wL0@nLeaR8@6-Ur7IfB0C2>K02&^H`GzvBq{JqX&{ z!)%Hyt=7#BWFA*>R_|x&ur=b;IB1nPH4a)QdU5ikUMFR=Dzar%l#jb4P>|lP=*Qx2 zo+i;ci60lt^OraAVz=5@*OXJ^pk?ILIB4ZKH4a)VPK|@shg0LAC7~DRJ}x&+`!0*3 z+&Ay+#qLkhx{)l2=FMLC>N~T6STuX@G>2c74m;y%gUS@+!_`Cy#bIYC!8qs)E)=tA>@zGdtTO{WFga~< zSx_8y##6V7z&Pj(B^36VAyW+7%n(6w*cngVDgxu6Gn7yqcE-~N^|P8-+-jW}A}9_! zL#r4c?m(4L9CpUj1{Kldpfi+E9Cn5h4C~B5lKiE4K9QxXb=^FA*nPlP0FF2lIw;OB!efDQzy3sL(~-nC~MJh=mWIK4d?IIO3EDX(~igp5Txp@wPoj zzQUQ2rbaAd0X-)fzp#=5bYp>IZu2Qb)jz~Br^824AF?BzM*^RNtOD^6QdEdy9HKxh zd>Hi^eO7(w$dBi+>O@FUA^S*hV#GM)Y(2-sNKqr}R0vHX9zuKyku5cBD>pHTv>0h> zL~?F-3&DxRL`hR6p4q^+9+46ZJGMHt9iK*&0znQtB|?e{kxeEiiIJj46y+c# z;vvMSknJR4|D?5jAo=keUONR(f#VjQACEPNRC8Glx7BjB@L*Rdbbwcw+K6crjU5(1NmiIJj4_Nfqc&V>Bl}!%qr^DsY;DIyNl_(g zcC@oDIFXnb@o7YM)v#^d)I?IFq^S}~dXiou5x1R3zG4I?O`Vtq1mC(uiZE=0_YmU5 z{Sco@lm=mrJS|3w8j*cDVmRDg-3Q9f~eGx|t} zkfK8N!4R56OpFvYvd)FjB;p~&rx4jv!?tx3lSqq^rbZ;^DXvB&;DN_jr@qrviDx$O zZ5iw$@i5}kh{7A>uu~$Ws1VtdQyg_xiI^BEYD7^EQX(Egj0%lE?6nc_>9wuM!Kcf7 zD-m_r9yqrh_$cZ#U?w;aQWS`XkfK8Nkr0+ZEPVL%A^VAMB=9*%iIAp3B;{_OFewj_ zc!wTZ9T;h9#4;9CT{QM$-LahypF&jqLmYEDd=&K|hsFeloK+wmLW&Aej6)QNg%6`X z?TW~HbGWTYK!?=_i=B4*R#eD75}X+EZ4<1|6POq&YGj=Xp-IF;h)*H1rG{zy3s1U{2d1fmL#KH&Z^Tl17CyO$^sef3Nah}%6^<`DZbyA(3KYyE) zRa)df|MJrpXV+&}7kPY_{JD9;KluJSOe1{6MCp=Jae7>2q2Q3M`d(e{aP(idV3~y0O!UF}_^Bqo6 z_LezNkUig_g6s(o6h!&HGHctWxL+n^ROQ9}ejx;F*|+9R%ecIaiug8~Z|l0q_ivoN z>i!&U%A~5Ag?YD-p1-__7iqpSizn(UZwa1pGq~VRaLJwEiaWuz*90@}E;^FHZxUZ#uNYCq4w+ka!;o+tIXN!h-wJ&u%*Z=QX=-Bjr^iI&BEcSbmWd7q@^vanA= ze;H5{`^$j3*k10xPv)i37igy+- z{myu4p2dy#S{p8l?L2GF_gOsOzyIoM^UCJgK%Fj{^Y}W>ZZ79Vvj@2YUL7C*ye>8% zc#n9N-W@!T*aHXeeP!sB&G@-5ip=tkUIG5J%~wr*yzag{g-4C`pPh3gywA=#65eO$90@<5bE-|bZJwC!p1Jzjiq|^3a^`o{L!jRng{wP zf3DE`Bx9KtrTvqP-qv*!H!Jz>S&Gaj68TE&^aJF3OWb;40y#k;0xaYU-}OC%6GsoeFuE)JK#6I1HSPc@H^iDzXt(( zd*DU$=}!RatEF=Ci5hZM_eTX3rnuq50_v zz%y+C7uopy0OSHO0LTSm0FVpB03a8L0YEPJOxp!w0FVpB03a8L0YEMg z1Ats01^~I>g|-XC03a8L0YEMg1Ats01^~H03;=S$OKlg30YEMg1Ats01^~H03;=S0 z7y#sgSK2NR1Ats01^~H03;=S07y#q~F#yN~UuwHR3;=S07y#q~F#yN~VgQf}!~h@{ zyw-Ms7y#q~F#yN~VgQf}!~h@{hyg$@_(t0WVgQf}!~h@{hyg$@5Cec*AO--r;ElEm z!~h@{hyg$@5Cec*AO--rKnwtK!FSp&5Cec*AO--rKnwtKffxYf0xbACKnwtK zffxYf0x zyOmrZ1^~H03;=S07y#q~F#yN~VgQf}%++os7l;8sE)WBNTp$Jjxj+m6a)B5Ck zTp$Jjxj+m6a)B5CyOmrZ1^~H03;=S07y#q~ zF#yN~VgQf}%++os7l;8sE)WBNTp$Jjxj+m6a)B5CM{*;Z=&lfNQKrRrg0CIsC z0OSHO0LTSm0FVpJ)o$h{L_cLC1^~H03;=S07y#q~F#yN~VgQf}%++os7l;8sE)WBN zTp$Jjxj+m6a)B5CkTp$Jjxj+m6a)B5CO@uGO_I)Lnrd41V1%9DDXl+nCQ7q^y7Uz&HeFK-)t z|DLOF+qQ4=Hy)}RmqhjZO%f$>RbS*qo?N{-`tNyB)@$koRk7W_;CP1nFxgmqQmq?FfLh^*!9zn_jf=WjOM(}Jg@tb|$c_nTOexWjSA!%v znL$OOY`cnlg)bDTYA#PzUxJPbK_X!urxY?@(Ps!7P9 z#Y0{Xl4-k=2O`M2=+zS5`Tgc!=vk z5e-NV9va@&u6Vk9;G3!#sGr{AqNu=aXsuF4?+$e8ot#a zn`YpaY6@~_@sQVpWZJFdVF^2WW4kjMrdRSc^h8#RJe5*k=&9Lp&B;?TIA+HC?bULdC33K3)(5bWJ72$EZ z@8#Ss2oDe6dQd0>8dyp+#ML0%ZaU-2DhCq}aXl!a0m;Eb!@C;ek5Fv{d=hNyaPV2D z@0Ei(t`3~I4lKmA7~pUR8scK`&=6O{ZtxJqU}51~3$kPQ4DQ<*N;KrvAc=Ns_yoK` zq8xevbl@Sc2aCxS+%fjz)v>*ZZ#Ae|hcl{lScq#uj)2JwDytYgG{n`Qc!nbe3k&aB zwCfh@?a;OklRx-9Sm(6!tGF6=gFEr?y@XrO;Y>Wl^{{$83^{mc_*R2#nqgb2Nywqa zLtYP(X}gjKA_x-^c|~}f?tA?p%iTHMb_8^4EZ=%i)edN2DbWyDgKWF$j4P`gOgzN( zpoj(}2M-PJYK%S!c05lzLHS-etS1lZ1>Lg++i$Mh{rkajR$L3a!-EimhlaQsR)Ys2 z1`7+{T96$xY)dr-F_dV?t3eWVp0~bN4H9MBRpcw2dC2R*Vsd#oSZMfGg8~`OsM28} zt_6?5eLKS{1`iE!H7K6W(^gyz78Xd0-<$7WBd8b`y?%wMYK%I?n~rRu{@`Fc6R>!ZBkav*Vh01%THgNU7uZD zGZ}4;q~Xx!NE!}pj-)}_yfMD1?uw#bM^&6JtGdXOyM_*#zIqIW`s&waUd_vNaoa5a z+h(5-HCu%Fer#QRZC=!juR2}CS+tI`o6C7o*To%Z*-@d->tX}qzBXv)S=>NgG_yH- z9L(p>yFXWFv-7MOvm>KC^AhF4OO#75QM$UIE#uJYc6AvWrK`)>C|zApl&|{zvQ3(H zDK|;IZ*I^Yy|rnTHS73I*=#`f?>T>Y6ED(y)!P}*UZr(%*S##di#P2GKl`%xmz#A_ z7wupBN%>4Z<%N98OZk*n@+q(7Q=T15Ig{^L-jqi>mN(_mj^#~xv}1Ww9_?7(lt(-E z?0Cnbwcy0De#(sXl=5iD^0GYIvAijdb}VnoqaDke@@U5blXz;MqaDke@@U8MraaoQ zyeW@%EN{xA9eZNR-zz8+alYE^x69^P+~X5#u#NuCFy1|B zdwg&g-8Xl1_B;5i<2RC$xT>kkKm$Lav;ExX?%xk?3!!6bm~7B6V`nqqqppy|;i03Z zj{UQ*ki=nO!=(+`N#Tt(B|3WQkc7KWzbE7!67A5tQx1Ie^kEqWT$=*BJS=p$)S-fq2K6yB~AJ9=# z$36(0_;76rtWQ0d_^9b)odsdZ!$XHl9kQ8*ZP_Lzj}{+2eMrXb&LA*>m=8*f&5nE0saLlF*89v(Vu>Wn^_c6?7e z$#Jbb){_tQg6(}rgda5={+4i6nQbtt}*TXiU~ z!ydAA5l%a~v1wyF>)20jZ3N7w>(zsg6xp1kLq|=W0fQhYd6@X9=|c^RZn6a>4-XwK zb;xEKxMiD?JX(D8^dT8f&p#yGw&BQExD(P-h-V^jZ4b!u58S-DOav}{sOkqe;FRd7 zsYAA-`!wKkk5wKfK5F_8e$T|=L6Nrfqmp)`a4cop=OCU8udJ2)0+dV>P5^*uo(}-y-aIHh60K*QcZav4P z5LN#W$D9@)HGRmAoZyhN3dBW7O(BYLhypS3VbjNUbg+MlYPtW~b!;$4)lR>U=cMYy zhiijCHB-Bu+Q*v{A3gVsz0o@{_ps36Qip7&VcR#SZsT%~79Tx*NXFfB>?y52B-{|^ zo1IW+kmJv~LllUI50`@|v;ht{B|2*AkoKCMd#v&>@ln%v>7l79O!UutbH6y9q6d3V;=+#Y}CYIVZ)^jX^eqewh4)&L`P2@l5n>t z2udCvK6?7F3BHEqaVoZMiuio-)kO&yAFc;c|I zVbi9au*aWp4x4HZz4);lM4jlUsbe1mPJFnw1Rjo}PJGn#vCaY~I%@Lp(BV>tG)I8L zO^c77J|yFIXD})MkZ{|EBVXZ8NKYZ2iNH1B$ntj+!FD8dYB(-^sOkqe;FRd7sYAA- z`!wKkk5wKfK5F_B>cU1%8~Y@1p~E)VY^}yaM@=2;AP7nv z7B*bkkexJa%Qhu(l<4TGLlSQH1Yya;!$(gamSMoP?vTYFb{uu-HZFCj+J`sVbl9kA zL-yk22AfqJ9y)63P<+D^hlLH&=J$7Lo-E4vrv715rqx|sHh+%hWxBYnqNO`2tK8O86?YWCi1w0B;k z{RpD{(J)=dWzz*^oUa;Ln!%Yjq*qy7RnaESZPNBCwoKw>G~dqWS<>`T*=TqZ=lhDC z|LXCt>_c}{P-NpT4dXv;^Hl@#WI;~|fmA#p1d{HJA>yUluJKTzduv(STJv(Z?0(Q$ z`>p`Z`Hf*%Ewo_PQM^OraABF$I!!8IZza?^;AXs0nE zB-&Ms2zdpDz=)97Aml5fcwNSuWl=nCbD zGb%J1bHijLYdtPBS?h73$y$#K-K+JCudjWF?$z3N=w7XThbC)1PR3qeKSez*G+FC$ zp~+gK(BGSR-5oB<=5#XhY%wM#TBCbgmo&dAqU~ncJa^h}AM7hemBh`Kr+R!~b@ih8 zo2dP(sD8gmo-dP|c$+oPt&ToC>dix2r0Zp|-JQ?y5!fMEb4mxudfVH2J0E*2bc=>W z>up=R2O-J3O;LUD9K^>{3U6tM#}>WkCuOp%>Y{lPn#Fe;O9%ei*z2ySs`rhvc8B-& z{g$`(P8!Q3*)&gcOut_ZdN?vX0y;_$kAP0ny@tArS4m#S(V$aD@5$39trzR0j230_ zSnl)7RdeL6*Jry`wt1Wu&9kC85$zs41D`ktM3Zx1z-PV@J`Fe$;e~I6PXmrbch}oeFGjm;dODHR!O#7 zhlhL?(OU%S?ahsk727E!u{!sjX5a6gX)U8onN-!bOrlMH-8}#Naq+IwRUT((wQvrI zwnEMU(Gw=;fav*>b3pWT$vGf;w&Wb}Gq5Lc4*0@%z?Z%QzVaRLOWy%s`wsYx?|^T7 z2mH==!0$o8-UPXPXv3_b$sgT_PF!el*jDz8{UT z-lzFTKFA+(MWokF$!-X?SM)4Z`;964{>eJL7lT&?S7zHggnoN>O~-GGU2A9K#mGyLr5v?%BZ)_VlKdzLrsIaY6p zdN`TfG&f_mkI$h2@17?%MV40UroxX;0ezgnJR~5Nre3M$@!h;=Zh`hb2%f#z{V7^E zpZ7P{NgLU&dUp((r-RG1IhmQ80H3tibPqno9Q4f3D~yZ#=CQ3hici`f2T+G`k;GFd z#zAMaAJ(aNh7yXy&QOAJ&>2c7>@#D)lpjC3tTRId#bIYW{m?`N#zAK&p*ZY}rwuAo zj1N~6B@~C9p#!?mhsH%k z501x0MNf^#MMaN{dyf)VMK#?@q^VGH<)?;n^VLjHiAJ$`Sf5%hXeprvS?T7VP z+kRM&wf#L$ZTn$8*0vwkV{Q9kJ=XRwd1~7a>#?@|upVpM59_hEf6Y_deprvS?T7VP z+kRM&wf!ScZTn$8*0vwkV{Q9kJ=XRg@zk~-)?;n^VLjHiAJ$`S|1nQ(`(ZuSwjb7G zZTn$8*7l$9)V3eiV{Q9kJ=V4#)?;n|hNrguupVpM59_hE{jeTu`?ox`?T7VP+kRM& zwe5%XSlhqjsck>3$J+M8daP|ftjF5^Jx^`>VLjHiAJ$`S`(ZuS_Mh?8wjb7GZTn$8 z*0vwkV{L!nsck>3$J+M8daP|ftjF5^bDrAv!+NZ3Kdi^v_QQIt?Z4ouZ9lBX+V;bG ztZhH6$J+i&p4#@qdaP|ftjF5+!+Nakzv8KFKdi^v_QQItZ9lBX+Wu>v+V;bGtZhH6 z$J+M8daUig;i+vutjF5+!+NZ3Kdi^v{#%~f_QQItZ9lBX+V;bGtnI(!sck>3$J+M8 zdaP|ftjF5^d!E|%!+NZ3Kdi^v_QQIt?SJ5@Z9lBX+V;bGtZhH6$J+i!p4#@qdaP|f ztjF5+!+Nakf8wcaKdi^v_QQItZ9lBX+Wu#r+V;bGtZhH6$J+M8daUh#;i+vutjF5+ z!+NZ3Kdi^v{#Tyb_QQItZ9lBX+V;bGtnGi}sck>3$J+M8daP|ftjF5^cb?kz!+NZ3 zKdi^v_QQIt?f>AZZ9lBX+V;bGtZhH6$J+i+p4#@qdaP|ftjF5+!+NakoTs+^upVpM z59_hE{jeTuyX2{DKdi^v_QQItZ9lBX+TQTgwjb7GZTn$8*0vwkV{O+wwe5%XSlfPB zkG1WG^;p|K@zk~-)?;n^VLjHiAJ$`SGoIS^!+NZ3Kdi^v_QQItZO&8MeprvS?T7VP z+kRM&wcYU4wjb7GZTn$8*0vwkV{J>G+V;bGtZhH6$J+M8daP~DQ`>%6kG1WG^;p|} zSdX=R%TwEaSdX>shxJ(7eprvSeaBPVeprvS?T7VP+kRM&wf&K&w*9akYugX&v9|rN z9&7u*d1~7a>#?@|upVpM59_hE|A(ix{jeTu+Yjrpw*9cEwtr!M8}hL)wet4;g}(Ek z>if=vR{H}VxBfI_m=*{mpUnCdH;y$j3=6ZGXQ%L)hJSD1fm2UxvS^)3{VB(lwjkjPFWLL!@u2#M@BBIHZ|t^Ue?$S?heeC!MU(>7l<>}^uk=_1ae zb)4N?&WpM(?tp%Na-7!%`oOH$SXG?w&oSeHyT>KK{?2ssT~SrGp2lQlMpiZC-!BPMek-{$X)%$$wa&S7q;{3le_t z$#2{!(QNo0KM@4)>A9gOn+FIKViDs zpz$=g#9eJhhv{lFI!sp^6sC6HJ*dOD*j+kMM{!DL zFgEB3oxzCWl+Iv;aYAP>qB!0ev)L48hB%7jogoh6XlIC{IHfZf8}#VRI9?1!6sL3s zBa9O|1EJ{cgdd(_4moZ2E?e#%a+w2_zXPF{6vQc|chmGfE_Y9H?{`-|cb{zSw^!#c zo2#8^zA{@Xv^{qUh92rT1w#*RoPwc;Gfu(KCtFUz&}Uk`Hm)}1c9BFw+PDW{8JD;1 zXP;HP$r{b~JurJ7H)pop<07y_J|zY+;aBD)dzWO*9kL;h+kb1`G|zUY(M6Fj%A`35 zH#_xZ@_0x9xO;Esu za)b+mE=RH;U3yQOi%pV8$@|^sc~w=|p0M@jQZbLJO?;nQ2TN}tK0b*bF;uNF&`|B; zD6+I#H-n;i%9l4!3irbujK=;$kNsy5BQ^();ZSEfhC?mr7!LKCV>q-)a14jG3B6CX zn}=grbkqF2#=aTO&zqGV4IS$nky_R_B3-O+L<(5nh-z(pqjOc!wIORpbUDcSMsx+p z`bKoo$NENeoyYn{bZN)>MszjD`bKmC$NENe&BpphbeX32QPExFzP$NqDyNS}hR2~l z9~mBp{(xk79QqTI;c@7XNQTFuKO-3)hyIXccpUmulHO&k$4f;19zl$aP8?x+PdBQ& z<~s2@`d{0)tbg?QiMp2*1cl$5^JkW>*7a_4wfmqtPV?PPD~qeg`%Yk=)w`Ts%$xgA zY5e%;1-#=A_MFis&L7uw5T^Hup*i=DzY5?SmZ);C2hH7!?jFEyOS<2@Tz%VaP@6{p zdG`aTQT=|CM7vL$F7oE;z}1_h|DG3Ry{2B!euUV);CP1n?6U65#x}v^&Ar;MUAXeAvB422=OUIw$!k#+{7f(Vx*}N$+_Jv z1Sb*`B~6uhW&_`PL`pF1*y_}Fd>T;-1Uc-K2q`K=HsusYomCvD{Q@gP85K>ggIuZgCh=mWIK4d=)+saK# zASFVY3Xzn%XWWxog-E6Ba(BsTL?`gCQ6zr@yv#4A6s48j!z>>fgp#S5+Ox}nC1eXi>wkcF;disqCCab zh{D^Ag|R;f(P?~e*ke?v9lK+GruCsIKceHS8zV)H>~q15662_|wH+5FMU|-8(ayTy zL}FsZrxDpz!?tx(6G@Gdrb;B~NqUJy+;$%MiV>VNbz&M2eCrY^!mthALx>aiLwqVx z8iYCWv=}LBME2!~;lSr4t4Lgw6jh=)hba;hBSwvE2Mg+^XRA?1`NZ+f=p!9MiVE2W zLue8)F;djXIu}Bdh=&lLLS#z~+ty7?A}vOm8j+l*xEhgw2OeXc`c6|Np4q^+Ww49H z!-!8K3U83ZPKl7BLS$1;anxBQVq&DI5k)yjiFgPxDm4DE*G9mn*R~=DpDy#QMATt> z;M{iLqo~h-nczT3Q6L^diVE3BLRbQ^@Zr;k>?gjFz~>+(LYfMZl)HVxq&!689eQYW zV5F%L%UDo#(b$W1$96t^3Q_eBam?xPQPhVV8WS9HR)Kg3DJn!U4pAT$K8*UbDEiiIJj46y+c# z;vvMS(CE`^$N03f9^Xo2JsD9i=$@9?eplu0-wzJsiu%}RLSO>%5K>ggIuZgCh=mWI zK4d=)+saK#ASFVY3XznZr#9azMB;6Gj(mkPBTbE1#)76qEQI(JqTq%&=5+Wd>ccY< z_#9*vh=-7(LKI`?nXM=g3m>GTr#d@-{x&JAw8(${<)<&suFtM6^7t@h9ucE z#Oq{V5D!)Gmxn0AYeS~0i#&87|(c5HV; z6L@KGxS8K@AEHCM21j%#+)GotYE$GZ+lHgJ0`6C6mi>mmJVfL4R;zh@H!q6lCdn7J z68y%LtT{&BHQT3dnQk^}X<0ok)1PlQRl3~mKJN2}HTphD%Vl9-qy1$-GuK}RGSzOogVt0N5$BOf> zR%Nl>6|8w%Zq2$p1{a|E2Py{+G&+`d=zP z>VK*HsQ;z%qyE28?tiKLsQ;z%qyCr5kNRIKKk9#}{HXsgmHS^RKk9#}{HXt>@}vHj z%8&YADnIJ~E9L%|%8&YADnIIfsr;z_rShZxm&%X&|5~~KrShZxm&%X&Un)Q9f2sVa z|E2Py{{Kw5|E2Py{+G&+`d=zP>VK*HsQ;z%qyB%P-2YPfQU6QjNBu9AAN9Xfe$@X` z`BDGBRPKMN{HXt>@}vHj%8&YADnIIfsr;z_Un%#$RDRU|Qu$H;OXWxXFO?tlzf^wI z|6eNizf^wI|5Eu;|4ZdZ{V$at^}kep)c>!Q`(G+Q>VK*HsQ;z%qyCr5kNRIKKkEN) zl>1*QKk9#}{HXt>@}vHj%8&YADnIJ~H_H7ll^^xLRDRU|Qu$H;OXWxXFO?tl|98s$ zFO?tlzf^wI|5Eu;|4ZdZ{V$at_5b(E{V$at^}kep)c;cXQU6QjNBu9AANBv)WB;R{ zG?Tjj&zm3hzZ8Ge|5Eu;|4ZdZ{V$at^}o4)&D($I=U=4qqyCr5kNRIKKk9#}{HXt> z@}vGY_pf#OUn)Q9f2sVa|E2Py{+G&+`d=zP>VI?pTBrY|@}vHj%8&YADnIIfsr;z_ zrShZxH}|h~`d=zP>VK*HsQ;z%qyCr5kNRIKKk9#T|5~U2rShZxm&%X&Un)Q9f2sVa z|E2Py{x|opb^2c_Kk9#}{HXt>@}vHj%8&YADnIIfbN^bW|E2Py{+G&+`d=zP>VK*H zsQ;z%qy9JduXXxgDnIIfsr;z_rShZxm&%X&Un)Q9e{=s@r~jq$qyCr5kNRIKKk9#} z{HXt>@}vGY_pf#OUn)Q9f2sVa|E2Py{+G&+`d=zP>VI?pTBrY|@}vHj%8&YADnIIf zsr;z_rShZxH}|h~`d=zP>VK*HsQ;z%qyCr5kNRIKKk9#T|5~U2rShZxm&%X&Un)Q9 zf2sVa|E2Py{x|opb^2c_Kk9#}{HXt>@}vHj%8&YADnIIfbN^bW|E2Py{+G&+`d=zP z>VK*HsQ+2=H(vtr{&9uRZ?$|0DU){b#BCsQ;z%qyCr5kNRIKKk9#}{Am80 z``0@CFO?tlzf^wI|5Eu;|4ZdZ{V$at^}o4)t<(Qf`BDE%@}vHj%8&Zr+`rc8f2sVa|E2Py{+G&+`d=zP>VK*HsQ=CVYn}d=%8&YA zDnIIfsr;z_rShZxm&%X&-`u~}>3^yGsQ;z%qyCr5kNRIKKk9#}{HXuU{cD~6m&%X& zUn)Q9f2sVa|E2Py{+G&+`rq8Y*6Dw#{HXt>@}vHj%8&YADnIIfsr;z_&HZbg{+G&+ z`d=zP>VK*HsQ;z%qyCr5kNV%-zt-u0sr;z_rShZxm&%X&Un)Q9f2sVa|IPhto&J}~ zkNRIKKk9#}{HXt>@}vHj%8&Zr+`rc8f2sVa|E2Py{+G&+`d=zP>VK*HsQ=CVYn}d= z%8&YADnIIfsr;z_rShZxm&%X&-`u~}>3^yGsQ;z%qyCr5kNRIKKk9#}{HXuU{cD~6 zm&%X&Un)Q9f2sVa|E2Py{+G&+`rq8Y*6Dw#{HXt>@}vHj%8&YADnIIfd;Z_trFpU_ zS2?Vq{5?f-Rq+uysr?f-Fm z+uymp?f-Ur+uypq?f-In+usa-+a_+>zld+6Wl@y-x6NMc{uHg#e3eA=v_8A~&h*tH zE|+N@XVEe(lSSP)@x&yD|<_x$P5v}ao8bePb?z@;a2$5X z(^i!#$cL+p8jiybQ3G<&A$&MyQ`v`DfQaowEI1B3^0ZZbtui*teAppsI1W2R4ah--x@mIBgj=5 zzmMvqEaOFkF5Z&>Z+~gtUfmV9$>T$*A$vc+G23mN-;kYG{KjnC9)#>Yr=FL^eI7Lr zxtpip%V?FwRb`Rlm60OOmr0e@iRB$%ns?kZPY0t#QO23&J)fKRv<+{0d9S^i{wV5o zW7mAyS;d1#Mu#Vy@hii0o|cRC=^r}`kAOaG7#;zA#PF?Qv2Gp(cbyb%;@s98y*Jj| zo117}rp-qa_i^^vAy?n-{?v3$-h5EAd$JtW?>9-bdqj1SH?#2S&C!2vpSDsjXrDfI zFF2lIx7TX_efDQ-b(m@GV8bac6>8>4+3vanEL zQH5-vz=oI-7bRUtw$mD8B-FOa$X7U%QBsD*{pgw3sI`(Td*^8<;FCRCrVweWHA5!H?od>BL1x7rXPF$ncCYTaz)7(NV@~ z{(ywx;liQ|*+av&W782vi;R*oB;9uH4@nv(HcHy?i~yE(hAjNB!=+Q7u_!~;J+yJA z#6?FJvI{3R%&fvNkilqIVWGmJ3fVxzwqui#MTv`&E+pITx$;z27ZPe{bIeYL#r-VnixL+W z$52%dY>??t(NTqL!D)>#t1LWRbabJ}1||y&6&_W_pD5c1_!!o;=*Mvp_9zz}T?RNm z9ATKq=qO`1e>lSMaADDf?4g0%vB?OdMMg;(l5V&52P6#>8zpUcM!;kbmo9zAq6}5{ z(8ie(7ad)g?9bvDt1wJtbd;gkPHdH-pmy#bd%3?;_TXH`qf0we$Na42Ll=G=hfFsz zI?CAX@5Y8_nA!S_i;a#p)QD)OSxC|_kzrAWY@=aYvk6I~#zsjSlJC@fLxOEvjeNxj zI!fv=%>kD6hAjQCP1-|<6E`+2+EA4bZm4OI(NTtM#1S)q#WhxGxY+1uL(vUR8YVJ4 z%Ggc=)K$k;nU3v=vzf;;I$U&gvHL$DVVKD1C}XvMK*I2FVbO)`p4pUc_^_>9>W z&S!Cp5*H<1NVeUoKNY`_P=_8Z9mpst!{UA|$Beybc5Dm7q6<~^zy_HP6&+Q`*)Xj! zW|f79i;gZ7*}!CBp~9m|yU4NLm2Ha=#*y;DPNyA@b#$>i--!&%qHjIxGm+6z#%lh6 zgyG@Bq6^tW!?t775k`xQk}@RScI^*I8YVVM+VG43mUV_Kd^ZAYhfAkEV^M~xduZcK ziHnXdWEW0sm|2BkBBP@W#Wplyc)0NBGWv|!kv;8L#NkPS3!J2n|vl(;DALb7!p$t#B>&U`F1*!7YU79D0GQO#Q*lf$@ ze^Hgi^Xtp1j_ahl`r7>S+oY`1MVv+JIJ>!=7j<3Sot-~#{<=zw{O4bO`r_>R?CK(q z?-IwL=XJ5MN1T^&nn#PGjI%vV@TTt#_^K|`%_dn!)u!AolIXrDmiu>KeY#1rEH0z? zU0TiF`waHZXRseZuwJ#BqU5WVovk+i)YN8EWNEc-YBSH`#cfp=c@oXbba5Lki|ss1 zd~}5ObVRTG#!y?7>0MRi9*K+$PQd=gz%G+&6W`}ioG;czx$o2SuRi?yXt9pVRf2|; zYrJQm&0OPMc#e1JIo=hB*Hb!6SL-@jmGS##?&OOysgu1Z;LWd%n5!~Lnt2uH%k1%8 z=g+%8S7)>HEUl4*L!&(N66L~6luIvBy1Jl6>$JLzjndU+Y?Q7pC`xasx{u#Avp9LT zDXQkbi=tV!9!CJ^w!bjlR_@lgrq{YL?r(s5NkL4%FAarxS}xWOEA$B=(7Jp=2(%i% zGDP-TSZ2kq%sbZ2gqdf>;&%U*^Xp}@DU(IB8C#wW+o%i;_snm&3%}tm{f0ZJ9n#;i zc4NaG)NX9JgW8P^cThXj_>Q$38}6WXW5XTP4u$LOx&O4ySIs8*^b^G?F_4C*#6Vnr zXXa10_S`3Ny-s%1YtZWR2lM_kze%cQR7K5+a&fy`ip*)E+Rrqwi2c!o>0lJ^(q;PN zF4(qyK;q*l;xEsz<*bNrqb!NvCXWS}y=a#7Ds2jt*U`M${>`qpn`JZN+dqKv^p>U* zBceUWNfBq>F@6vcVeIvHbNJbv`?KxcX5UHY-`;JrI*o4P=19Lxn{~2o9!2b`SfMSo zb3k+~at?^jMa}`y!N@rvIvF_!yav7P9Pl&W0blqI_|kX4SH1&&={w+S-vPhz9q^6s zfZzEJ_`UCdzw;gN_r3%ErSE`$?K|KfeFywUz61Va-vR%L?|^^fJK*2?4)}Mz1OC15 zfd9;Qz#n`E{O7&{{tMp$|E2GM|H^m3f9*TqzwsUL-}(;t?|cXR_r3%E2j2nzqwj$K z$#=m2>^tCp@g4BL`VRQtdYW9R2K|Jyg^{{sSkYaS~1?hQ2$4D-ilh`(yD z67BxVJVHcI4;{myXNPYLy2bk@e|IUM`Ood+O#$-L^r7!ZPglP)`5!L<)!Un!=)U>k zmwkb*j{m$*5?3|#Q#J$du-bmP)9&97ehdeR6DAuqZ3f)_3`rawI%?|JFM)<64htJD zZOBdvZ>%ZN(Nl*c+}#DAkatM5Lx0%FfsdX(EW?0nQ(%{eg$|cG6xi@an+_W_ZOC4n z++eec!$U_+9g1&w;;^t`)23bjcz=81E=4d0(FbcCKe^vGSM=JG`vDy_b?k${i4WJ7 z!1~mKiI18-)>#miJUn!`)FGQ`*p_Wl@@VnV(}!f-?hFDGh>4J%LOc_JYyBb1-%W(^ zzh3dkc85zJs`>#AI3+r2>X7X?z42z1hl!7xJ`~{q<>8^jrq1Y-X~*}plN{H|V?Fs$ zFX*0u*naJzBHEnnX0he>E;_%Q>Q-|U^xmAY(JM1A_7vZ#% z8=E$^vyT1b)<(c=x?Vl_NRiDsI&{?3888Tfl81?pnm*L9=q6iG^6=2%Qip7&fm^mI z$)m+bPal%;^!!7@Z5xh!g*zcVg?J_c*Y?g%S7PPhpK*n15SyKnmS}Vx=#Zx z_gLj&;-jVyML0ltc<8XH(+*nJySrV#26Hrhu-A!4Z8d%D)4+`o+jz4z92X%qg{%W1 zFoBr(aOp$#)3EK^v;eh2y3Q_eBam;D) zQPYR)$O#TPt3X_Y)D)r^hbRyeA2xk#M+f_-sFwS$UB?DNYO-Xz|h0hh*G6$DY#aL&6PlzS#+N208w$ zJ4Ata_;5LhLL1QJ>0Z?x&KQPYO(#mNmet2jJ#)YPH)h9?dS8#Zm)348nr z=dh{v(2F0-LDY$knmYDD;KYY(OW@%s>cmG)AL}e|qN64c4;?ObNOJ@@+_d=U=|eJZ zcLtO44+*zzIPw+lg!B~RnFw41jx2vS5o||Nr-tLwhpK*n15SyKnmS}Vx=#Zx_gLj& z;-jVyML0ltc<8XHGx}uO@%>m1rY>yMw6RYD7dmW%&DLr>bkx+b4uYV>VPV6i4cSS< zwro=pM~RM}IwawCPY{+oJbd)@VHpNo>ke7`VaHLIZsSsis(pB)O^1z|He@eOZm?O! z;i03Z4#hV-aahGrOPB*7Wa8H zPwTVum-k6pE{kZHmdT<{iySQgK4L#RJAeK*DXS*U&%gZi#o6`Q)kPlPB|c(bFvh<0 z6??{5?<29j)%!?nZ}mPB8`b--On;~OP4iW;$uhbts_K2y=gn8(M)NXV+&*?Y5bbjl zq%O+EdT)-a*X(W zJXBOvv2Suh5ru^bhbCnA3_O8OL=+_|I;xOlC$*}ONZSr0U*XI}M;8|3qqEeQC6X+9 zXMEeej&5Ufd}p-Vowomeuy5f|g{pa2BTR>hiY8?LIh&rtDOOQT!iHnLZR^Nvs3l9|zRmcV!wgsDvELvQ2 zbRpTcD}F%2Fp<$whR6LJ>kC=-VMj@)CgaeBs(N69Oo@t$Dr5^zYm8ZCVdA2q3q>|C zS$L?hs51H()^QEsbpwjD;k!kLSXE}a>UKVNpHqU08iY0RMtRr9b$ zm<|&aO?XVt;S{SVJXBOvp}0$Yh zL`6jw9x5EFkY*UR1)Gd4T3mE=A=$Poen7%7kzV6 z8)QmUR8%2ba9U%`Dhm@A6YoL!$?UF7jy()*_1ZN5y(`{uP}ROj{n zeX~!KcblwOCeb{t2NZEY6hz=#Ltt5^o2qVD3?lKuyzy;QgFW=~U+w-BEz>et)D7_+ zg9=eNCB`#Q%u`}qc!+W7A;y)57}p+ReC8p>3lA|~dWiALLyRvy#CYu?#y1{fyzvm@ zI}b6w2Qj`g^P^0bQ5EOQZunGLJl{`~tFO(gnn_xxi#UtcadvY#FY3CuV~KrU7aI_` zH!TOrVKqDm@<$$cu~6Nho>C8WFU3$ zl7ZA=K!$l1FK)f9XuXB!)WF1Y_R6fTt0G%QMftdo2g}p%%{$&FSytRft1SMpS-+bT zOc^hlMLB+4318mCi!@)Evj92n*^6!6 z=)M;mv`lXccORFVrdKvuoZnWKx4kr-wn=x{_OCx5+*c=rKwWe~2-Gttgg_l~LI~6k zCxk%izcz}@%iT71v6J)hp#_k?x6kjU;k-;2w^8$eBrP9%;OTbY{N;U;mdnCEJ-j7A zJ>V??>JV=UQ2)3km~m@xB!OQIjwJA_!I1<=gFiR!Stju^ns4XxEQuCH*&JzyJT>eM z-&GmEZ`_wJv&Z%N{CW51>TGtN;fIC;gFN#Q=`Qourz?klBFz@1gRTgiPVe9m-O<$+^+q6n|T|G~hZl?lxdwr_i>i(Hwah9FH|LQRa5tv27X{@`zh?*zaLz5Li^s(cns(`-+B!Age?p~ zc!(${V*hw83_)0U_}7E%n~+A95)lnWNUGh3>67pXiF4=$Ee9qVny}d2|H5vUgoTKI zMJSjdjV&D>3VM*8H=&_r6@-U~f+7^tkOX1j!JtRGlJWk6h+T>R4u=mGI)0A6Pae+E z2SgMUv0L4ViT`EY`rLtuiGn6pw}&DL4-x;0kgYRpt2Gfxw3ujULUL_a_h3X}qN1S+ zkLUfbCuGSx&yW9A5JxsE{xzX09@OwsBBG!O*?dzPT~2iZ5nwpuPk z{EsXpA{vU2RGp`pG&EtcyM`nzMEom4!3=3^>F`j{gU9Or9by%PhlqkA6w?W< zA{5MF54E}or=6)7^st>p>}RSr0_M?m=D`PW3=YvDqM*nCs|O+p6B7kZsBzFutw1E< zA>v;VvULV-wWcA7784CkNUl@z2??}qFY*=cR5VoK@x1>fo-FymO_z)3{cA#1JgDKN zL_|RmviaQo?%yR=Ntl=@XhKm9N)jF-42rblll9(d*PQ_z7aweN;=xxz6T9Ets4$E! zTYGU)QBcKd`Cvq0V&Y#DvU`SYyQU(F8WjyyNV4rZAC4?sTr_lHGQR(Hg)I88gQHuA z`B#Oic~~P%i;03JWdBWSfLTT1qN1P*#WgHZn3ynVV%y-`KW((!;OzP{fa7DQ*~f5t zbYkLvk*8XxT^a48%ZZ7GOUB+tos3IZi1=58Y@K1-E~nn|?-DI08k&$?yXV8xSWQTv zVa+Z(mCgvqpCN}O3J(+iPN8rHHN2FFC@4bOXi6@zO2WiMK@*BKkI4U|2QBcHgbq5{_g0S%LuLo&>fm^Lf2%9n#p+;h~@h*?AKhT2?`Lh$tvRF%3x& z79I?Gv~%!I_)KO8y{QBcHgbtfkNmvs-vLnkH*npoZLL_|Rn9wPn~Ax#j} z;L>8Ep$W;gUEL?*6B20KUgRs>sc5Le<9YwXi!6EPdD}73slEJbLRCDd;iW`GK@qa~ z-2Lv~C00q8m?&sMQ4LBG9wH2ij6N-POv67cy6{lY!|rt#A`C;z)>u456cn*qJrF@y zc=*?Y?3-a*t!W6NL_|Xol4`rIhaw3N6AevR?CyUZAqzh2i0IN={uQC>9n#p+;h~@h z*?AKhT2?`Lh$tvRF%3x&79L2C-`=HpvMA%5`iEr_FQc2ZOrk|m##uDaipA~qWmU&@ zQk|VYf18w5TI4_f^3xY**JoE3d3=|AZ{A+KOPA@7$+CI(W|NfBe4EYp@1C7!X?-^P zbW_|XW%H7G^Cu4xXWk=zh!GX-6xJVNL=j(`I^M;rB(LM>z9_PN{Xnh$;_16qS-jJr zPRcS~6m=c%L!7_7i5F?Uik6MSi@FgKDKIYTGZw5DEKx66qF%8?y#`UgGd=LXwsBei z7%hwKJWHY~iy!@W^|g6bW8*qqH2z-4+0Es=>5<}&CH8q;Y(U^Y8aSIGORM#6CS>vA zwyK+NPmShfy10$*^qlGMPp$mp&4nUfd|Wpil#(u8mf`xyVFjvvhi@6hHfl_L}D{S ziZbv?n?pxRs77fL_K4JBHVMthex3Ayw2H<VL9ZA5# zF_D{way-*SVtpfJ8FtimYDx*+C{+Rh6H#sS ziM!+eF&?;Gm`y@6`xJ4ZCb1pyaNKsGHVM@_;Kv_+b}F6}5Gni92Xs78{XwAV=FZAX%?aOO4*-B@EZv|^f_rK$1_c) zAsi1k3CB^$10R%1)Fz=CX~$`gNvmv3+$NzLMLuxZc&Le}W;@?dpE0(oJ+$mcdE|EE zHVNJAlf;dj#HNJmxq+KWH*%9u&N@uoxJ^PhCT1m2W8&ce?!;{px^>7$+$`^epX42rvDYS#Qj<`PG}Ex{q*F&qxJ`@O zG;|}`x4V*ng<~Q&4ducel%y=(GzoT6QmO<#D3z#5xXnt9Y}sj#NiA-Z(2XJ=xNJPs zL{uAp;qiG>lhACygmj=LaRBgf+;*Tg3DxXF#DUo)L}Otlp&4nU zfm_Ilil#(u8mf`xooBy<*GS}TN0P5_<~9x8SO&>7WMiQwp&A7|>=CKMY!aIB3=s*Z zSw-WaHVM@z?#`2c5~8s%6Va^Q{vH1aZP;{t=vVxac3Ybu57rh&XW*@tUn8 znYc|tH|rb;S2iAM5~`667x<9W;x-N4NcQcHWU_uEp$|N0JCU1)ay-*SVtum<$HPrR zHwt;+gHnmwBvd0?cG_doDjO5GN$5tA4_r1LY9gxH&NtL&jNMZb+wV)>{dAp(e2%p}KA0HqwRKBvi8w5f^5Y5RHYIgl43XhHW9IDw-0tX{bh$pY*Cm zA`g5*+PSd|5{VJ1L`}kNlqO-1NF8RA(2VTYNe@V?Xgt&=p&G?KY|&VlAw= z#y9m3cX7Tdi?>NsW%2y_vZ~`csjhl2c$<`Ux`?xA9cMR}^P;YcyR-A>&0kk(k^lV5 zPhXr}pIu$#@mtX|9{@y?>$_8r^t+M#XWEs^-S;mV7PP|8b{_-YXr1>gZ zre(6I8+2&l8x`~!2ht0UpqCs$uQ-BUgP?yf>aXK+8O_V$K98CvZTfe)>x8O`HgTTp zTL6UVHD+~J6!kiq$5ouwmbd-NWWR50QD$lO-tv~;nYUDRnQk@>%uSpnQ4!xp_eHVX zzyIpfO`2tK8O86?YW5xgcMSK=Z@3>pxI=ZabhWOddA4n)NnfHpXAq{RPI8x&an|UZ z6^mQT+rI6UdRuMMMOtjDsEYH)8lS(Mm)mN+lb|eCWl~jVv*+t(h%`e2jfQbi(ZF?y z`iupuiRu&U1q)Ua)hE_V7OW;J!rJrlT~SrkC6BMes%nTY!X+s z_30t?f^LIk`}u?2zYlzv9WEnPjRx$`LlcRIlB!Df4S8rHu`uG)i0rC?PhKV_k`g6d zl}OT)T$M<~Lmxsrw4Sa`ECT{@u-X;#7$O9OlT=VWg@N*_V?Xcvg{kD5e9$PO3Ulqyv?ShZ3twqffXU=hIGuoGX*{lXM&r-3Z3KLt z?fUlM<4snPbSSB+G+;OcCleDVRh{hfAvl?MC~>MpHrBu`-qd8$;-sq+$-3J?geMde zDP5&_rUd6Uf|Q|~61GolyC>%-ZjCr~qErZU@F`JJRf%lPX^uUsOiY|qb)rZIDiaSS zR+ZWv0PCIPu6Khv;y&1IN^6r%C;NnOBgMIipgucq7hEn?L4pb%{N~|i`&QA6dZW{p~o!XiN^_i~iy3sL4 zsu~TL4xx#}LrGO7`)~+NBo;=T8j)Q!aEmuFk(4Ouszj3R_71_x#KTEfCzb)hxe+Ht z7Oo1n&N6XQ)yX;^!jp-I5~oUJV-4HlO-?2)PP#ggtlJ$#fI=~m z(p8FQN^q`EqzuE3woc8*sS~9_po33|lB!B%Yff|QS!H74q^c7|I#8K-D6y(E`h?qY zKJ7HfxiVQ#PSgv!=PH(4)-B_MBfF|b_URCuNIaBORk99;;6!3!#HkV4Rl~M;Qxi#v zlCDZ5Y3CWvxhj!}+s-3j;mk=_Czb)BD-#PPPL(LYVU9c~d{h6hPU5%kqx&RXt?OhNZOWvowq+7+vbavJFRQxwPj&uz znJlZi`R3WEN>_QDp;C5LGT97sP1ije-^_+g&Ki`x&)6m8=Cabp7t_{Kz76!Ur3d`bOo?{gn#+1^xF$DhL| z@x%AoUyZrTX8lQ~-De30&&83aL*#;#W#%&Apk%uwJ{@6r$S5geKOKc53=07al*x-Zv-S_7ED#A=8PBk}`JtJF($e{;4Z` z?TX37MoAm%1PDnQ9x^=2kZm+pl*lM4LpI{nMw(R`CN@giP;`TnhKCH3GNVtO9ovuN(CNZONf*2SUC8ik z0X!TzUC1aY(?LD{Ag6nNX8RerohK*qn8x}^fCCpET}VR=+nTvF8INO>$Y?1;(w&%R zNUUw2k*{!Oqoqwi5tSdhF>_&~q>X(7xR6njhKCG~ zGNdU6Zq246jTRd%ZAiZE1DeM-B-rp~nw<{M9MBSnhYgQ&D6GK^H6=1i%8<62+DNlX z!^B2O8;Wjl((sUBQpR=~pgxsqm3e5ykL1|t#zsjS`wVcS!?O{fI%(i0&5e$dI@U4Z z#zsjTCN@0Ukj5CcO`DQ9YIL;JAqh`z)gjRaIN9ucn1%t*Xj7xZ;~uK^;f*#eHcHx% zy*RnSW)+8vj*>bQ-|)m?V#B1(=yPaC_aixmI+0OQ#y$j`*zjxyJRCxu*eGe!VI6VH zwi9fm^f52%|(sOBs@`^JM1n42iYvGx8PAY_zmt z839_-u#n+VhJqT}IMd;xqzjMzc^qREhKG!jG89|qxvV4%3l}C`+HKYGk6?yPvWG6j zA8oeP2;`9IL`F#&yZxQmFnPw-XH0CAw6RWrkfh-u!=nt@M!^j0! z1JtKd-O~Wu@2uSYdmx9-PPx+#&`P@4{qI7CXA3~}(7^4P3mGM4toC=|q9hCp7am!Tqk8z7v*AoeOcAbpQ@|Z?H{9?c#-C-XqlGDqE3ta`8L1J zi~IcS{Q29YteU_1`In!*IJ-W(y2#_Z%^2P2;I2pnwF-O=>+L`Si z?k8>I`j2~F7aI`uuZ(8PB-vD1qkl9n)5UGHEVlD3iJHHfKQ_kK=H*QX)afG5qII0z zT+WNSF79}f5H!9sxT;OLT_hgSkBdDF^gOz%y+C7uo8*LYe0YEMg1Ats01^~H03;=S07y#sgH`*=`1Ats01^~H03;=S07y#q~ zF#yN~-)Xx*3;=S07y#q~F#yN~VgQf}!~h@{e6Q^SF#yN~VgQf}!~h@{hyg$@5Cec* zV1B*;{kWId&lfNQKrRrg0CIsC0OSHO0LTSm0FVpJ)o$h{L_cLC1^~H03;=S07y#q~ zF#yN~VgQf}%++os7l;8sE)WBNTp$Jjxj+m6a)B5CkTp$Jjxj+m6a)B5CyOmrZ1^~H03;=S07y#q~F#yN~VgQf}%++os7l;8sE)WBN zTp$Jjxj+m6a)B5CkTp$Jjxj+m6a)B5CkTp$Jj zxj+m6a)B5CyOmrZ1^~H0 z3;=S07y#q~F#yN~VgQf}%++os7l;8sE)WBNTp$Jjxj+m6a)B5CuFd9oYoL!$?UF7jya%!A+p5pun;{3|+s<$^c(S4j{kBq+E{V7@$ zc|*N!m_+saO%f$>RbS*qo?N{-`tNyB)@$koRk7W_;CP1n#Tmu|AuoxeFot!FK$N(VEfbVx`mK{lMTw>`VUDg_S0bNvE%0Msr`2gBq?NFn+l7Va#hYrEcGcryA+3eg+aXB7Lc+5WWV;O8MomBp zB^KgZkUYERwfd_C2{N1+Wv9X7Z_n$65)04Hpeh~AkkTO`tpwR{QyEcKDR@{&YeCTr zMhX@ZzLgk%%4;Lw15($Jp@VYS`@^f*3q3JZnLA%)o8b1jNvy zA+82Vv|GP}kb{YbxE?$vpWuPdrK>!vLDf2(QKiH}S_>wFdv=CZ3?>@VYEV2UvuaQv zJAaS8bl$0XaANYUMLQ|S{OsOC&xL;QbE6@xhTY(9JbVu-TUT-Mkk*450_~&@VYEV4G5rcvtG( zF!2!AgU95a*A24RoylznKBunotOixv^>xLAEVLzQUP?xEd_}78iqsg=Z}&jKK^k9TL(?@Oay^E38uR zu#nb*qUk(lrKMmYfs}Y>G;SB#tJ49JCwEf1J;bQki^{fe!m^s0dF7n)_hh5}3{E;s5o#AO0 zdCu^(i+m?|(nTo2H)h^6L#3*VJc;U}T&y1_((Cq*(cv_DzRhp*W+0uNKX2w&l@|HW zzx?#Y+4b4gMIPTJ&T-q?cn`X(hwq?WCwhkAV<8=cZ47WkAV&y7 zK#q8+?+8H%$Pt1NkRt>kAV&y7K#mZEfE@8k-w}ckkRt>kAV&y7K#mZEfE*zR0XgDJ zeMbmFK#mZEfE*zR0Xaet0&;{P1muX<`i>BUfE*zR0Xaet0&;{P1mp-o2*?rN=sQ9X z0&;{P1mp-o2*?qF5RfATAs|P*(RYL(1mp-o2*?qF5RfATAs|NxLO_oAPTvuN5RfAT zAs|NxLO_lXgn%3&2mv|bdwoX;LO_lXgn%3&2mv`l5CU?9AOz%yvqwjupI{XH`3QCh z$Pt27K#mZEfE*zR0Xaet0&;}8kj~zY=qH8*As|NxLO_lXgn%3&2mv`l5CU?9xsa~r z2tf$Q5rPnqBLpEJM+ibdju3=^9APe`t2sgt0&;{P1mp-o2*?qF5RfATAs|PX3+ZZ( z5QKmnAqW9ELJ$ISgdhau2tf$Q5#~a=nj-`uAV&y7K#mZEfE*zR0Xaet0&;}8kgnzk zK?ukZf)J1+1R)?t2tq)P5QKmnVJ@VrIYJNua)clRkAV-)B>1vJ; zgn%3&2mv`l5CU?9AOz$HK?ukZ=0dufBLpEJM+ibdju3=^93cn+IYJNua)h~%uI30q z2*?qF5RfATAs|NxLO_lXgn%4jE~KkDLJ$ISgdhau2tf$Q5rPnqBLpEJN0kAV&y7K#mZEfE-~iq^mhX5CU?9AOz$HK?ukZf)J1+xF9s&Yw_fZcEE4T zHy6_Vet*Of2gt?He<_JLu$Pt1NkRt>kAV&y7 zK#mZEfE-~iq^mhX5CU?9AOz$HK?ukZf)J1+1R)?tm<#D@ju3=^93cn+IYJNua)clR zkAV-)B>1vJ;gn%3&2mv`l5CU?9AOz$H zK?ukZ=0dufBLpEJM+ibdju3=^93cn+IYJNua)h~%uI30q2*?qF5RfATAs|NxLO_lX zgn%4jE~KkDLJ$ISgdhau2tf$Q5rPnqBLpEJN0kAV-)B>1vJ;gn%3&2mv`l5CU?9AOz$HK?ukZ=0dufBLpEJM+ibdju3=^ z93cn+IYJNua)h~%uI30q2*?qF5RfATAs|NxLO_lXgn%4jE~KkDLJ$ISgdhau2tf$Q z5rPnqBLpEJN0kAV&y7K#mZEfE-~iq^mhX5CU?9AOz$HK?ukZ zf)J1+1R)?tm<#D@ju3=^93cn+IYJNua)clRJsB7=~dOhG7_nVVGuSvMQ;{N~TC=SNFj1|Iy#jFVatNB(pMu#mp1I z48}b-Ie>sscPH;XH_kmbK6pu1`7BSDuWzb4t+VRl>f?7=S>?s@uYdc?=NGRpZm*Z= zWA=@`a8ede%j9ug&C8;A^j!D7y>9v;T_)3FIW4m~OIF3xEGs=%|Jq(X%hFkLmzS9_ zQKpOJDP1g*JB$13v+du{%ulAZfsdY88e;Pm7@Z+DuLW%00Gt0{$8*c#{UZG#nvTuRkuQb_*hJ$w1ScBLAvPt(^HyLyUjv(eZ+U-8-y6cG#cGw6NnNI^SyAj| zc=Z!2pUc}~l`WG=USC{(wqBVkktMT@@;84I&(AB8pKFqz8E>^&LYt>x5 zH>>5%l4(1G?qGupzqG+T&$vaId9GE*r}JcG#=2UY z6|=d#-n+f}tjuOrT`bMO=l9EWfhO}%duUM?Y7Z^wLhYf&T&O*?kPEek7IC5WJ_X4c zYVS>Cdv7D#`y#TvFC*LgIkno>v;Y6ebe>HgPzmg9@>P73*YQo>#5Z{x-{kA~CO?gD@=bh`hk1$CQv>pH zu*t)`9BlG1F9(}E%*(+h5A$-c$-}%HZ1ONKk;!jc^)g-VmV|Yhm;06G;l}mq?NgSQ zvm&tvMW7r*EVrMm^2H)8 zlk|OFU48&U3$ykX}KG-120UFjc%QFSC2(e&yz}E`5xB`ntkJXK~r*EFKC_~;N{5b6=^uG z7Xe<5#3I1U5if|B*82EQ>*c*!=?}ay5^NBScCbM-u)zkSk0Dxv1|vjk&|rgT4H|3^ ztwDngqBUr+L9_-9Hi*`s!3NP9G}s_og9aN!YtUeWXbl={5UoLfW%uOIOP%Su-gSgU zxEDX%zGLyzT1`$(TfoDlNXyx7QP^%@18cp$*P~M1_j**B`(BR5&K?`3Si&sQN8PXJt}W~uSeCa@Aas7wYF4~#X39E zxeSE=Q(N`++ofII0GG7RdAHrt0}hJa2GEAPb(pWu?ZJl8bUxTHn&$@_Mhk$!hSADkuwk@h7;G4=C0eKZ z>*egj<}7}0PSwqGF_Yr`Zhi%8gJ0TOzA6@ZH8)pJ7Uo31&yn~S_TtA6(`=EieUH(- zwO4F!6z||&ew>)R+WfyIh)~GoM~(BCK0mD7n7vYI zm{gBM+RLjzuzgY~ez1MKI)nY%R^UIc)3W~IWe-cgR-KcKyaz?{BqKinBdvY(DmAx6 zdOu~-^8Wk~Nwki^2&U0SCW2|Sm5E>)ZDvk2edMMXx{VmYbgZ#Hf;!e%A2E%_`rli9 zZy$|)%F=qCZMxQ`^SsIyoBz{1HN9JU0cEvTmG@=(!Sr{e=A8?(#5`(W`5HW0#|_)o z#KQ;kf!9`J$t=rO<{00+V`2N0U4$e3q1GJ-`mN{vo;J-In}(QJEyyu!qb!eM8>M*+ z+bGXZwtYlHsHnuS9c{di;Ep!lM{J|;4`x$3 zH*Y}M)t>&RzNgwjyp zo&&d!^n6qm>w4aK!N}%)G0oEnt{1>Wg>n648cfwue6%dea~O;)J%_>QWJdE!3-!!U zLeb3(B^cK)GeZf5zh+6?7PTniX^u zdzuw=5ZgM{s#fKC8uRhG(+r}~3Py+qF4$o7F+``@!3fducCbOzof>Qqb)^OyMBS*t z22mGkutC&)8f*}Codz33-KN0?QI~13LDXFuY!G#owr-#-vrPv*nJArLKKkwJQJiRk3&3(iHCd)@`cGPt0q2n~y9s&84U9<3WUx-FElw z9IxG#6rBHiY&zCmTY0nv)Hoz0Apm&>rSwLul`EvLUo*IoS}} ztDI~I?NLrPg!U#aL(dN}Y+o?Ct4IBwVmQqTdW_*TE9g0f)|c0|ZQI%VRZ(qvwfFBd z*#!sIRc~zL-6DNwKY;e>BLDL`pCz+wRnO5nrPsx%7WcXs)!$whqng|6VpL~)U5sjL zuZvMV?R7D#p}j6fb+gySs8;s67}dvK7o(ck>ta*~dtHobU$2W%z3X)`s&TC+bDv-L zHcyxLo3`urYcnoCP0iO1&3y&)*sgha_DDbV)mQgrbI8BB%=SiJTz>p)57mT70A6VW zK%aZ1jR5-CD-8hp)GG}D`p_#40Q&IpD{U3f03a3603a3603a3603a3603a1yYpZ|; z0I7fm0I7fm0I7fm0I7fm0IA?cTLm-#NCh+iNCh+iNCh+iNCh+iNCmgrDxd*CDxd*C zDxd*CDxd*CDxd*CDtN7}0vZ6M0vZ6M0vZ6M0vZ6M0vZ6Mf={(oKm&kOKm&kOKm&kO zKm&kOKm&kO@J3q&Gyq5iGyq5iGyq5iGyq5iGyq5iZ?#oG1AtUO1AtUO1AtUO1AtUO z1AtWUg|-T40FVl30FVl30FVl30FVl30FVm4)K&ov08#-B08#-B08#-B08#-B08+u% z+A5#{Kq{aCKq{aCKq{aCKq{aCKq~k~TLm-#NCh+iNCh+iNCh+iNCh+iNCn?&tAGXo zselFmselFmselFmselFmso*`670>`670>`670>`670>`66@0I)0vZ6M0vZ6M z0vZ6M0vZ6M0vZ6M0^8b+9%ZFHUmy$ssem>DNCh+iNCh+iNCh+iNCmdFTQ~{PQ#LdJ zNCh+iNCh+iNCh+iNCh+iNCmdFTS)~p07wNi07wNi07wNi07wNi07wP4wOdIAGyq5i zGyq5iGyq5iGyq5iGyq5iwzXSH1vCIi1vCIi1vCIi1vCIi1vCIi1-7+YNd+_jNCh+i zNCh+iNCh+iNCh+iNCmdFTS)~p07wNi07wNi07wNi07wNi07wP4wOdIAGyq5iGyq5i zGyq5iGyq5iGyq5iwzXSH1vCIi1vCIi1vCIi1vCIi1vCIi1-7+YNd+_jNCh+iNCh+i zNCh+iNCh+iNCmdFTS)~p07wNi07wNi07wNi07wNi07wP4wOdIAGyq5iGyq5iGyq5i zGyq5iGyq5iwzXSH1vCIi1vCIi1vCIi1vCIi1vCIi1-7+YNd+_jNCh+iNCh+iNCh+i zNCh+iNCmdFTS)~p07wNi07wNi07wNi07wNi07wP4wOdIAGyq5iGyq5iGyq5iGyq5i zG5{{Mzh7_!0P3u^z2z}Kpl}2LQUMJBQUMJBQUMJBQUMJBnhR`ew{Q|770>`670>`6 z70>`670>`670>`671-8pB^A&BAQjL6AQjL6AQjL6AQjL6AQjlwZY34a03a3603a36 z03a3603a3603a3E)@~&g&;TG6&;TG6&;TG6&;TG6&;TG6*w$_(70>`670>`670>`6 z70>`670>`671-8pB^A&BAQjL6AQjL6AQjL6AQjL6AQjlwZY34a03a3603a3603a36 z03a3603a3E)@~&g&;TG6&;TG6&;TG6&;TG6&;TG6*w$_(70>`670>`670>`670>`6 z70>`671-8pB^A&BAQjL6AQjL6AQjL6AQjL6AQjlwZY34a03a3603a3603a3603a36 z03a3E)@~&g&;TG6&;TG6&;TG6&;TG6&;TG6*w$_(70>`670>`670>`670>`670>`6 z71-8pB^A&BAQjL6AQjL6AQjL6AQjL6AQjlwZY34a03a3603a3603a3603a3603a3E z*6x^3*&J!_N1fF)07wNi07wNi07wNi07wNi07wP4wOdIAGyq5iGyq5iGyq5iGyq5i zGyq5iwzXSH1vCIi1vCIi1vCIi1vCIi1vCIi1-7+YNd+_jNCh+iNCh+iNCh+iNCh+i zNCmdFTS)~p07wNi07wNi07wNi07wNi07wP4wOdIAGyq5iGyq5iGyq5iGyq5iGyq5i zwzXSH1vCIi1vCIi1vCIi1vCIi1vCIi1-7+YNd+_jNCh+iNCh+iNCh+iNCh+iNCmdF zTS)~p07wNi07wNi07wNi07wNi07wP4wOdIAGyq5iGyq5iGyq5iGyq5iGyq5iwzXSH z1vCIi1vCIi1vCIi1vCIi1vCIi1-7+YNd+_jNCh+iNCh+iNCh+iNCh+iNCmdFTS)~p z07wNi07wNi07wNi07wNi07wP4wOdIAGyq5iGyq5iGyq5iGyq5iGyq5iwzXSH1vCIi z1vCIi1vCIi1vCIi1vCIi1-7+YNd+_jNCh+iNCh+iNCh+iNCkcXUq0r`Y+9yw^&cmB zIh`lfBAvXxsp_=Os@tF0e|?vgbv{iO$vj=$-AszQE*>wgJ~n?{<;C)^fBVbl7q2gF zub1g#7H0FRE>^(c8w+Dm6puT2S3jBMWj3vifAkEG|H@avKCgqXya8AKy^V90rL&}7 zPqJiMlxEZ?i(>k)3mjbjQ+s)~oF!FVEHlp~|7b5+6^p!@XB)3~cgd_+PZn8>Y>48* zksM#!5T<4RSQSeHz9@HrU%uJ=DVgWX`z)E{^~LRXtqam}mM_il?i1;ws#w?a%iCg= zEt{WTezsn%vT{p6^EY7h)Tst^0y4i7YAQldePIhR)=w`=ZmXe0!<;D@@t7{}%i>*@tjesa)}{GB z3v+I_JNmf#tjuQ3DNs`7_vV-bRmA}&(ec>;ljvM+fJt=VHo)X9I0hPE@^yTZpT;-& zCceqH@lAda-{hC^O@1BU*b%;%lkNo+JQzL$Jqa5VJ`Cf zd2J4y*XI1aPR;$9S#rNft14Ng-UI#CJ%IZ~@zm!Y!1vbkcCr{an}pg!Q%R^jG>?SZ zLz76TJv4)a+C$Svs68}ygxW(BN2onCYlPZEQ%0ygG+%_;Lz6|QJv38<+C$Sss68}C zgxW(B#J{)o?g`jO zm$Sm&NJMLG8E>d|%6LPSRmK~tyAiyZ7ZnnDJK{}{wChQXa=RiiDuA>=|nSVp>(1dv_3k~3|bbo`etUEW}r!FwgS)H zKu_snk=&)reIk9f?GoCzv7js(WEADpAfqV51{p>9_6w`U&E#&5$CAqEvCl54)k$WE zSnNms&E`-3X}{;?Xo!1Wjs~;mNwDX@yMc534NMbi`aQO#|TVw@3fI>FaX+py_nl z{@}QW&CQ=Fq}4*nvrVgrT4tBeJ1f@iA97LXAbpSj-3xNTEQqW;|#Z%`^Q9$P&7*1$dmw)dB!>L{Wh0Dc_zY) zYuv|H&Xi)&;l-JSXI9L-#0UkW!;CB1u@NH^iwrNm<-h-~WpgI@qu63@c{?o>9aj9( z4~a!&;&&xbGgr#QqQi?<`QxEQBoq-=oC(x#Id(R*D8-`0i!<8ox$?QpE>5Upt7HCP zMAR=bzbM5bq8QhxkF1dCgrdWWGX>A9jCpC1iA9GOSFj_aMI;m%R)+5=8w+?FwoTC= zMBNU7dGk)=phZvbyM0j!LP|xMq*$|@@j1n`>aJO^+h^P^YMu{7l z5^%Pg%aA-1Va7G?V=HG$vFPw3B!3abc!?1TMu!8x+Ovrh7d9f?xJG_-MNKOh9cG+~IG_fI zsK!f;R5Uu=xWXMBHA2D2Fyq?|xLO?>X139uSes=uqZ5k`FMj=xh!~+@beQqVe?-K{ z#3I6rGl%*u&CZ7ytzeXxafW+lvy2mK&&_5~qA77BQvyU50Dfv@f)QcH1$AuYOeq!} zUYuEYX2r})j8HH-%($W*8!LV*;I-%&W;;aqlRmQxu$i$+mSg8bj8-s8%s9hs=Ke8JBNUAi zH!>waWS(&j{I&%6HkUzpCc=zs+{aeVlw#50#hHa?R?NJ_2nD0Vj4Rr)5hD|e3@?NC znA>1a+m?yUFy5Vv>j&FI4BsmYH~-$*E$gu2m;QKYk%>iz7q9ZiLyJf#BCI$QsNZtz zY-mx6MTr+@w814=WOi{vZIaCSi{N0Cm=RIG5-}pNi16YTsp_=Os*9_S-(_W$7t6o? z?Ju8SyuP@-UZ#)PukBTjMOA%Brp08k$hH>Dm3g_haQWGKRpqlRnH5jVWRlkxS8t!P zyqp!uEHATZZET})j_l?YCz@-Hn;QW)mmF@6xRK!Ih#LuRj<`YG{Ko2Lo|d!ZF}=^0 zb((A>v&?46{UWXQ$^rcT%-Wb`wGmKJCS{s0c9OmPyUm}HS!(Pya(lD=vrlY8?IH$; z+C`KNwTn0!YWG%%x7Ts(US7%M!-3sM`EX!2Qa&8mjg$`ub|dA(fnAgjU)lOFS*)|9 zD5vv$wyO>xiCQ!5eVJv;mlY{lrOV7?;UBEqRk6sc`KFwe=`ydg##o#cL0m5=MdNxw z2^-f7O5Xuqj!bN5r54wV053;k5#Z&B7sN|z;XTQXM3Y69zRUKL|K*$2X5C%YW_{31 zJ8?1-e;60~HUk*<*vy2j`^#&KEWj&Y!pHPriIe>Z~l&X;Igyr*M65FPx?2 zLsFy<+S9P)So6eVaX7gn# zZfhU50}ihK)`q>>jMp?>&P>SD^kHA=FRvCj*ZN+M_-a)Qv;CYt81Sx zGwBJSHL?@4!d;r!OGC+%xo?-;rOVybSD$VF-n-chwTFsTs6AAcLhYdf)XL|_ba`JE z@3Q2nDE2Fb+fP>cVv&|f`aZ8NKY%nk&C2^IR(=3h{@$i^x!p|tVE%Jh2(I4VrPF+Q z?>~SDw}`SL+#<@0aEmB2!Y!h;Zn#CX%KfF~dSA8gvgI^O?o9#NiU0BwQx}?wu$eV) zzq1!j&GtKAntHLX3m-MdgqOF)$}E2!lWcs?*H5N+YdHR>xzV8E`8rFLLhi7PrYCWh zd5*g*^E`K0j_CMOP0Jq7a$5E{?y`*b2my)h@!VmV=eS$3dHL00ndi96GS72|W#sr* zc8Wc6XK46-YPfyJj_MyR_(}RWDT>6zkml2f`@twK93ix}Wv#tnjGgQd%MQTb*fF1$ z`D0ZqljVm+zJA=T;lN_QbzN1L>uJ3%v*cajJ?U(p6RgYCX3JYFr=_`*;&Iqw?kRn5 zHWu0YRZ*G$PK%W}t4Sv7#s08hyK}z$WK}$6o2`grIeD_#OBu5lFU%r&4@8U1{>~=B z{_uFRFsA~od(ts-IG!IzM*qSFW7gM?W{>fFUwnA=8)Vu6xiv1$eaR2mVo^MueiNWA z%9RnNIYLWU3$xYUY3uT1bH~#qhyE5&F15z!IgG;-08mrjSmvr_@w5ZoZ2VUFzx4TQPJ~PGQIa%_1vpYp=sUTzMNFvA>I*kZ2h7KZvjG;4#AYU{V`-a*@WpJonR1t^TMa6NbT~sHB z+C?REs9jV&huTGjbf{faQ-|6`<#niCRB4CWMMZb0-5&MV?0<8!1>Lk02H(eP!92wr zx}g_n4&B-N+%C+`Zhf}S>)q@EW~a~W1=S*d^zH4xv_GFTP0)*C`ml3x^?H`AOsBHB zuQa>pcUQExy;qU#T}QTe6WLy8{80LYj^AK=o$(uNuQPsw?RCZv=_Pdh2HWe5-(Y*4 z@k91na=$Ch^9g(D9^UD{{K9l3J|@l2Ou<|=hY^=ww*GQ8FY3Z|M$zBfE2_6^s<#`e zw_B>W*Hmv8$Glxqb5hLP(VP_Xb~Go&ydBL+F>gn6Qq0@YoV+-mljtN?rcMs`b~Go& zVmq3XV&0DCq?os(IVtAtXifqJ49}9IbGMkcqd6(&?PyMlc{`euV&0DC*s2F zA8S$U?_r(1CGwf*u`BSIKnvs6!$6C4l~>86y|V?I=P>cv_g-mqoc>P=hP}$zHMT z`e@&`jn_;c&5h$$Xv@cRT_>Bn_mw%--UcKR$}l&MQ2yDnGF{}G2T988&ui0bnyk#d z^=w`&W}Ci+9vRVkuw;LS(w`NrcH8H6nt0T5`VVTwQ4a1v9`je(R+JnDU_nL=7>h&UDd9Gw1_qRN}*|p=#gC-IveO#9(EhaR))ICtJ3UB0V=` zC8mAKR47mWwVpuPvl<}@gUvbuZS|hbveZ19vYtFw2v3Zy4uNM)Kc%I4F0e=GZuwl5 zdG(l<=1l`J@?n5s#}Kt{9JJuZn>U8rcYtrLwx*`=mLE*xXtB@V%Qu@pC3ACweA@zb zVh{V~O)5>J;f8hB`D9cWomS@y9TeTZXC)Y&CTJxT2Yv54oOCkdQU^shGn8O-GD8VP zH!}_s6rGE3YX${HH#4*bqw}cSflN4q(S7bs2Zpz1a0a9E+~c8IDKNY>BMu7B<6Hik zfm-!Ws~H{`oy<5CD+PtWW>8>sGDB-HyfuR}7%v}>J`^hjMK?2)V01D=35CCAP)e7# zW>8RcGviRL6d0Y%P(snojKc)w42G{}P*8L;Lu)Wzu0Z>vXdNX_i-kGxH%C^R*U6cK zr}h4p(CydTzw5qJ<>U48!8}B@^dFU@Zj?hCd(H)_uV4^!hkHrjgbmaYf zXz>``kqk#iB9h_gh$F<&zq9w9pR#mw3(`y+o4ef4Ps+y=QhZN{rTCr@P4PVm@pL33 zkeCL>bi|VoPe(in@pQx!;;D6i)ZD)_uQ!~T=Y7oULhoMQ0PJ-;sqZ}`NuOx#9mVH% zPe={(xJ%I}pLZ72Fo93eIJcWxYM94eq9|Kiq^5V_lsEbRwlz;SZx=#lLZ^Jd!WZuHTlAIW^o%sGNSX676*A2V}~n2(t`N6e$lY4r)FQ}Zs}^z=Tu z6HK6O{|P40mcRW{v*)*u)n&SBx9wd0WdDlTi`J`BH}_9pe%A;b!JOvemAs2mH zg_8^9;;mh>Ptqz~?B7Gt@1dZcm!k=<=jCX!YkhK|dCTAQL)!V!kEac}^_8F(Z#InA zo*To11X@p2M0~w#1P2cIt)~UHFA!`#@YMVDhOI7g^I?z8qfOgESfr1>hdf$w zHL24$K4q`ldU0rDV6}bs>M15#?MAaaeKhZZ>G5P*>&Ye4GQW9APFWPS@7p4+b;9lw zeLde2+vs<)xl~FwZhh*85kl-nMpx&9gD)LqOB)dh_L30lTl(=*vt)&^m{AkYQJ!z!1Z( zL>pw+(TmY4(A#6z`FioNdDO9Z@2RsbF+NWS@m4RxY&$0YR=9s!FYnE>i_J%EUc6?r z_qkkH)rB~KUN>bc)T$`f;`@sA2E)`yuGh^ewE7b51kG&iWGUO(HEa3MFo10QG~R$ z%)KiM^SbR-`n12_3s$&JWMe=Z=|uf-1r2WQG!oZe|?H1eLp}YVBl(5{hnSD8cAt zh7yWyW*jD{MrJ6X=w^lzj80}qq3}Eu+|7)`1dTJBcwl&I1_eboGqeWd<w_qMI2?FuXN`LP<9>4ihxaY%;WFP*8L;Lu)X6HG?x4-uD?$V0dc=1w}VA z4r>MlhPP%Q6s_j@>e1ZNpNqVvHI^60y`5Iaz~(u*s`s6&*1fg;do7<|J9qM1EkkUf zE~OA#sAZ{jsJeU3IO@|4vF!Iaw;hDP$IK~@XzE#yv;yCcy_a(BcX;;!|S z@MF5XFN=3s68oJfC;Di;aG;qEd%a)cL?5j;4v6_^y>dXzN9+9$hd$73b>dh#`H1Ah z$wwp~PCg>}Xz|fZni9F&;zP_wiw`j$Ek4A2IQfXgxs#7bKAe0+^5NtI`Di_y^5?br zO5qPZ-qO%|+43y?uzk11EUUArd9{3!FW+Tlo$a6UzWQwc=8DY&u;~JAPls7Wv;Q!w zXp$dh70upoPt;4K-3LbkJX7!DT)wd#6zYwwdrHIw9MXY`!V)a`QtKW%O z{T^6-@#3hm%oe+sBpi9GOzYKs!>zSuLR6(sz}A}cB3Nt9ZV{~AMjf};QLVMtJW)AC zYk)9LBUo#38o^qN(+JjDoFZ$jcBAK}*6k8%C)a*&nLEu2YU4c33TohNJ-at8(z41D z^ETD}tC2u5wp>r=MY*n$yG8M2zXX1DmEOZwV)VKgE$(_2m)~Ai(yqe&I>J`OMT)QS4X! z{Zc=~77{>+EhK~1oBO6^I(;zX^ZX(A<{bNke!|s82%Fc~Wh?V-6|0FpUw^oIv%4yp zWsCF!n)X_6y9smG+%}lA26LWWzIpnQ%AENbw+iAL-E%vL3tB<#Tt}ZUG z%xi4X9CnhaSMf|;$1`;k&(wCT(6%FBtfH9Oj#U&>+p$8XT95HHZy#RdkDXO+pM~n@ z_R)&f`f>G;@87x9XYmDAzoAB(C01mc+tLu(Xj1@y&DIh-TV#*fa`TPArFoihy*c^c z?Rwi^;D}`i&H5)JLX*(RhEPpxHPFnmY*j7Hsz0goMdsTyv|s4>{DiD|pY*3aa}pNitDPyRsY-agSnD+)#6Ip zRf{WWS5B_trbSCvhf&3K<>V@^D<@aTRcop>6Wy{o23@3+-2&#ebw0c4Wyq)IY2bOf zxVxDY=2MN2U@8u^>Uh~i>o|UUT3fFdx$om2E%eR8x#y=aTDywL!kl>~+kKn)&%=HZ z(szgBHqe8X&5`Njx|*A>e?0DJ0mI(HeV;F8=EBB%^Q{!mrQNTbe8?8&#>LBplgC8s z9rC*ezB+>cm~IPOQRqj7KDmE1pK zv;P>u@b$}J^Nxi~>+J#Nv({PpE}Q*F&&=AI*F|QrWHZuv zEc;Q%{|Nr55el`J>WN8z3+TwCb=zvc1-i?Y(=53+_nmeV#^opZa{CFojW+t+{q*-U$M@WM zcpoV$zT@qERF#llKBi9$x%;*TuqcQ>*d3OMiQW0`56^RROWmedM8}>Nq#V4-DIUun z&mEQ{Cbq}1pq4$JJ1i4JmeaB?&a0ebK40qsB!f*#3Aq;om(SfrAHHr`-cYC*^C7gt}IoyB@-zK~=t zYn_u{e*A2&#|C)_fLGc8uC)Q&Xal&_2Jl)N08+s#Z57Y}AQjL6AQjL6AQjL6AQjL6 zAQfC|tAGXoselFmselFmselFmselFmso+Li1vCIi1vCIi1vCIi1vCIi1vCIi1-IHN zpaDQCpaDQCpaDQCpaDQCpaDQCc&)7h8UUmM8UUmM8UUmM8UUmM8UUn%PqkG*1AtUO z1AtUO1AtUO1AtUO1AtWUMq33m07wNi07wNi07wNi07wNi07wOIwN*d^fK)&OfK)&O zfK)&OfK)&OfK>2>whCwfkP2u3kP2u3kP2u3kP2u3kP5!kRsjtFQUMJBQUMJBQUMJB zQUMJBQo+~SDxd*CDxd*CDxd*CDxd*CDxd*CD)>fQ1vCIi1vCIi1vCIi1vCIi1vCIi z1>b6`fCd1mfCd1mfCd1mfCd1mfCd1m;5%&<&;TG6&;TG6&;TG6&;TG6&;TG6e6Otn z8UUmM8UUmM8UUmM8UUmM8UUn%i@gfa1JRKlaPU80APfMhfHne11vCIi1vCIi1vCIi z1-7+YI0=yoXaJB3XaJB3XaJB3XaJB3XaJB3Y-_iY3TOb33TOb33TOb33TOb33TOb3 z3T$h)k_u=5kP2u3kP2u3kP2u3kP2u3kP2*Tw~`8I0FVl30FVl30FVl30FVl30FVl7 zYqydLXaJB3XaJB3XaJB3XaJB3XaJB3Y-_iY3TOb33TOb33TOb33TOb33TOb33T$h) zk_u=5kP2u3kP2u3kP2u3kP2u3kP2*Tw~`8I0FVl30FVl30FVl30FVl30FVl7YqydL zXaJB3XaJB3XaJB3XaJB3XaJB3Y-_iY3TOb33TOb33TOb33TOb33TOb33T$h)k_u=5 zkP2u3kP2u3kP2u3kP2u3kP2*Tw~`8I0FVl30FVl30FVl30FVl30FVl7YqydLXaJB3 zXaJB3XaJB3XaJB3XaJB3Y-_iY3TOb33TOb33TOb33TOb33TOb33T$h)k_u=5kP2u3 zkP2u3kP2u3kP2h~9Qo)gQh{ylj`{t9BLGlmH4Ok#0Sy3B0Sy3B0Sy3B0Sy3Bfo<(p zQUMJBQUMJBQUMJBQUMJBQUMJBQh{ylR#E{C08#-B08#-B08#-B08#-B08)W%?N(9& z4FFOB4FFOB4FFOB4FFOB4FFPsZS7W40Sy3B0Sy3B0Sy3B0Sy3B0Sy3Bfo<(pQUMJB zQUMJBQUMJBQUMJBQUMJBQh{ylR#E{C08#-B08#-B08#-B08#-B08)W%?N(9&4FFOB z4FFOB4FFOB4FFOB4FFPsZS7W40Sy3B0Sy3B0Sy3B0Sy3B0Sy3Bfo<(pQUMJBQUMJB zQUMJBQUMJBQUMJBQh{ylR#E{C08#-B08#-B08#-B08#-B08)W%?N(9&4FFOB4FFOB z4FFOB4FFOB4FFPsZS7W40Sy3B0Sy3B0Sy3B0Sy3B0Sy3Bfo<(pQUMJBQUMJBQUMJB zQUMJBQUMJBQh{ylR#E{C08#-B08#-B08#-B08#-B08)W%?N(9&4FFOB4FFOB4FFOB z4FFOB4FFPsZS9Wvlugj{1;PN33TPvMR6qlOR6qlOR6qlORA5`Xg_96HWkUmiR6qlO zR6qlOR6qlOR6qlORA5`Xl~h0jfK)&OfK)&OfK)&OfK)&OfK*^xyOmTx1AtUO1AtUO z1AtUO1AtUO1AtUuTf3E1Km&kOKm&kOKm&kOKm&kOKm&kOU|YMDR6qlOR6qlOR6qlO zR6qlOR6qlORA5`Xl~h0jfK)&OfK)&OfK)&OfK)&OfK*^xyOmTx1AtUO1AtUO1AtUO z1AtUO1AtUuTf3E1Km&kOKm&kOKm&kOKm&kOKm&kOU|YMDR6qlOR6qlOR6qlOR6qlO zR6qlORA5`Xl~h0jfK)&OfK)&OfK)&OfK)&OfK*^xyOmTx1AtUO1AtUO1AtUO1AtUO z1AtUuTf3E1Km&kOKm&kOKm&kOKm&kOKm&kOU|YMDR6qlOR6qlOR6qlOR6qlOR6qlO zRA5`Xl~h0jfK)&OfK)&OfK)&OfK)&OfK*^xyOmTx1AtUO1AtUO1AtUO1AtWE2k_lv zzRad&dRPB3U*2U^oz0S2maVEqT4%3ss@nXgy8UF8FBWN;r0?_U^25c|$M3ST%8TV+ z|Mr*9FJ52VUN6(fEWp(Jc&2^;roOZRR>gXe)I~X+?*sd~`D1dIPV?n`GRwz%e9PtsIk0U-1 zAFcUgTIP>cu}to=@B%Ki=LS2mNYRk=1R>se8h zJ2#haHh)Uy<{%^sSzK?nt@}-MV*rRDDva(lt%KrV($;~|DexCMC=Moc9T=U=xYR+> z%?u?Noy<@|(ans*1VsgsTQevqx|yLh7@e*AflN4q(Hs=F*2Fq6yfuR}7~Ktm(qO#I zjKi7{XD~dwG=I%N3+B^mh6hF`GY-W{LE*0%6d0Y^L~Ag-HG?x4onwRpu~JZUGviRL z6d0Y%P(tCa8I;oHtr-*)-OM;tD+NX;Gn7ztGvhEpIfLP=859)V%+MN)2!5Tx&&@&0EJ>H|@_mm(pSvjFJZ6~b zrpSp{-lnIB>82O~%dHzLrsc_;g_+i-dj6rRlgWCvJ1o0xojx{QBbyeY?0VC&5#Q{q zHEMYofYmv=L+rX*eg@ce<=GIko8ki~`=vcE&EBtyYIAbGZ4^>DHx+^7U8A51DuSjv zBOR_1sBpY%7AhM5+Jy?IlR1Zr2P&Fw<|xDIWR5bLZsr`y3avLqRNl!PWi;K)QHImW z9Az}!%sEVC&CF3o)6E=ZIGxOqM&mg!?PktlBFCK{JaD`%grr-x=dH?v&gHT z>>pvhu+210rGNQEAvp0o$-^sg57*)zZp1w}d5FTalZPlCoIFJF;N&5ShZYab{3WUf zArCDcggmr(5c1&UAqvwiJsidm#eJ<9-Tajcy#iJJhqm_e_p3${X@hzNX4+-V^a`} zyT?``*mjQ%L_ga{-g<;8-O1y9#CEjtK4LrCcptHi#=Es9S57UEZhKLF0I;9W-XA+KDwjXiIx49<-@F)ehR$o@xheY)`d=wzj9*L7UrC z?V#=Lsdmr?_f$J*i+idaw8=fy4%+6PY6op}Pqp(auwg#c&aWfc`AsA{zl~()caiM; zb0jkW~5oa(CtBr>Pm>Y4e(@=H0Q~ zmm8xumirqWVt9Xb^_5w_t(UU~w0&78$2)pgImbJCQ8~vudP_OSJ9)^&j&h#k9pya7JIZ;Eca-z5 zRdb%>9pya7JIZ;Eca-xS?M>)^& zj&h#k9p$|3WJb^JO7`1uyrZ1wct<(U@s4ty;~nKZ$2-b-+sUkv^BnIe=Q-X{&U3t@ zoacB)InVKqa^7|_Yveq~JIZ;Eca-xS?M>)^&j&h#k9pya7JIZ<6$*hs{9PcRSIo?subG)OR z=Xggs&+(3O-gYu; zM>)^&j&k01GHc{K$2-b-j(3#v9PcRSIo?subG)ORx1G!yInVKqa-QQIrEJMsPVN4%q)w_V)P-cNhPJIZ;Eca-xS? zM>)^&j&h#k9pya7JIZ;Eca-zClUXC@Io?subG)OR=Xggs&+(3Op5qM>%ghnKg2r;~nKZ$2-b-j(3#v9PcRSIo?su+fHVUoacB) zInVKqa-QQIM>)^&j&h#k9p$|3WY)-ej(3#v z9PcRSIo?subG)OR=XggsZ#$Vaa-QQIM>)^&j&h#k9pya7JIZ<6$*hs{ z9PcRSIo?subG)OR=Xggs&+(3O-gYu;M>)^&j&k01GHc{K$2-b-j(3#v9PcRSIo?subG)ORx1G!yInVKq za-QQI-vuT;$)qi}N=XI7$i{-S;%>P*xPqVCieN)wGomCfC zAHU1WDle9Q{o7wYzj%Fdd%a8_voG!CkJ+MFCRLq1?yfoZruv)vvUsZJ=pm9&d#@tn zyN+z{CbGTT$o5`Gw)bgddvD^{dvz5z|MvDG<=@_3r2O04iQZ!c2*?d?U% zzrDRk`F9;T|MvDG<=@_3r2O04iQZ!c2*?d?U%zrDRk`F9gJ|MvDG<=@_3 zr2O04iQZ!c2*?d?U%zrDRk`F9&R|MvDG<=@_3r2O04iQZ!c2* z?d?U%zrDRk`S&_<{_X8W%D=t6Ncp$77b*Yt_9Erq-d?2q+uMtje|vi<|Gu&N-)WgY zR%QphTBOT|YPSal`<7qX>#DlUSF3E6%+m59Dbk1JsVHW<>u*0<<%>mHCh7aUy8IB= z-21rZegNivV}pH4-TKPu1 zb@99?m&Rk6E|RBou}JRHaZl`gYg5`Yx`oi(vd;o^Nh%YWEpaFe}BU8bv9 zQS8(B>L)ghE^mufwoE2@eR28OdR67KESVKg+rJTT_=@fDn(gq0?eN0o5S{1`Ng5}I z5)PdlN;q_KDB-Zh;U!y#9EU9qISyMKavVB2lt`ME4i6)gaOmVv!l9Ex&p0@9hQq zP07@()5{M5TaqASXbBi(3@r!W+A#l=-&g6=Zdi`pue>b_bN|z^892e(tE-sSuA^GJ ziE8aOs@oKu-4)< zg0&W>5v;X1jbN?CDVlA=IE`Sf#c2dXt~p)X zO{}*+Z_e6GYmw!9Vp?p-CgVY-EHZoddV$tE{x;BT}KMq<%LJ?ubnLr~eVoI?n z@#2j3yvmppYLjHnUjzrE#Egjg(G9&pbER|Gx9XQD$|AhDMtx+3OeYi_R-7pqtb7r* zcxjP|MTZwxup^^IBorA|2Ja}JQ}9Qzr3{KihZn!{gMyJMW4k@-a_77@j` zMtx+3OeYi_R-7q#US-Tni%cv!ytslL87(5A$gnbeN7-1w+pukl{x}+8kH(_IOAqCb zhZvz?beQpre>}v<#3I6rGlzOE$IgZrtzeXxafZ8{`$t5LP&7*1$drJy-CTy`nFuqk zaUWYbQ;J207a{qJD8@^SP%t{oxS~C?S;hr*tNx+Q{aa=``!X3`nwmP~Ss2 z=%^72Mur*RZot***f6t=_QcvOqZyr8ba?UWe?-Ix1*5}^SN!UYt49Z)tWu z#ApSh#EdiCGn-|cSbJ_ZgAz@N8<`RyvHB2lcEdf3azH3Ltn`q6KrA}6$i$+bD#_A7ZqEQDVj!ZZr3fi5j73l(>;80V4B^bKtin zz_+;!$}(CXe6yFORqfhh^(wi9fA-&mDv!QQ*X@_OVbR6G(hUoT<}qsdXllXhovI zi8Iz_b{`EXLZN7|BBS~E^NDlFx0)Z`t$Jj!5}y;-h>xmxDFvdyh%@=lsdRZM5sE~C z6IZCCqC_ST0Y(Pz7Ppa}w#SM;lX!O~t{-eqA$(n_oO#5@hhOU>Aw(t+4TboYC?g@n zTe3pph|h;JZ~85@LIR0jvXlbRV8j_}aP`%oL?#jqPDJFcL5WBp@fmT!98=lSi9>-8 z8L7uth?fwVKol5pMS4cFhzn-FL#?fa)Am#XeE9Yv{ykM=0mre;%+3us0fp!UqQFQG zsgHybp-2=sag~E@)fx#UGJ(Wr#F;uhms;mRiB=>UoH%1WC!IKfHtFU3MR+J0tjK6S z{uJ*V@}7&X5Y5Nu#5LlhDqc!~C@|tozHq(ASBaMrp-2=safLc6N@M~NV5BLZqJ5{^ z>>R;%@mWSEZhRFu@#{S-6oJy^OE0NV6j<>}el(;AMG~JAXZG}4cAX0;YN2Sb;taN# z=f^{fR4f|22nj#_yy6`6ejCTI42#c-Ys|-0!n7h$;KZ4KXH~$wq)3ILz=|u@agibv zi2x_Q1-}1oqo;#&o1Y`tK5jYtG3*|LB8flAyHcl_8U3XzC=v~o4DCie8hxQ71?5(Jm1sqx!HF~0?fLL|%qC8t>8NOR=EZ|L6GZJIiEC$4(z()_Q2Luv-5gcQy7!Zg8 zBYvp|#GyclNF4F`a0;O3QtK=TQ3^zZ5of5|d3_|5$V8&SiHO|emo4XjZ{_Yi;0nmC z_>8#5drW0ZCk_QZoSAn*N zeyImV5`S8cussZlM1d2p+Jgd7phPB+_>4G3Fsj0(6^RBX&RCn-{Y-S?1lpvR^B3Wv zXs{xq`S``lIpkZ-`?iTe=@p+7*NBg*cqs**6kKbiwl^4su{_QWHU%bA!yP=li|RQk8H!?4neRomCxnS#G=Rvix?~jpp`JNxL4u z9d^;u^5mrQxb3pb^4npT<+fXySy|O#m*uw0F3WF+UF7!5)+Ab#%ezJKl$E;)7tEQz zZCx|Zt89_Yl2x(DtGW3n`M@_7s~a6?QX@_;k^0xp3h*7G#pe1<-_T*DIOI) zGV$o~bf z9R6)Z@OA2K*F(n_RGVYE=HENZ9Wj1fqd&p|rxT7IJI-_rt_EW2@zNs`j~+j+fJaD= zNH}urG)phpC%`r?I<;C(Jv#B|@#C)s&%ZcrGSwqUC?GwCyai!o1j)oB#*Z_f`Yqqi ziy*Cl6d7`c+^iACMv+iNiX6$51+jU^NkG3%YEaIJG2|NmF_t-{c=Y&jX5<+bIWIv% z0qHU1ig=6!$;2ba&)~h?HsG=Bg#0&!Julwoo|5|5@t1>f(IXR&qI$fC@&V~4wtjPo zqu=r^B-_N;aVAs0*(jya(9zU*t&#$<-(2j8R=3k6DHb+}_njheu={8-* za~E|xA}7Wpryj@f_g(9Zi=ZCmEhHd4hFle6lnU}L-p-02XFl~@zJ&xNwm{GdNK8Tg zfSkWLLk&6cN|tR!jz(7I{1nLqB*u^n?ikCQQapP6I5YALi=3Arp@8%laz#8wf@I>6 z0<4iYy7$2C@0bPm)kXVjQ{fjaUwMzh9y zk&2*5kVrgY3UZ+xVS&>LM~@w+yw0z@dFhdfM~@#@z$2tbBpf+*nx&U$4{$Re0SND`$bw+$tqoDuWzb4t+VRl>f?7= zS>?s@uYdc?=NGRpZm*Z=WA>fBW;)NSY>~~9S(dG;g}KOc?ay1+uIpr4tX5f>m@6l{ z3vYjBe`37X`7~W5^K@}{Gb!r2cm$vZ7{02D6|njXi={MCnqe`+HA|YI+5rZaw!&DY zi!3S9hvca!X1mL7KUw9AMOr55`@FjR5XH*-C{}&|R{q`&M!vi=A0Tf=#C+E_nUwkT zq1r{}zdW6$(>zU9WmZ+|GD}wN%(?o^40Tm+>{j{xGF>1kw(y*0@KtPt*Rc)W#5Q;v z+u-Zi20x8$@J(!kZ(|$$BDTRVV;lTBw!v>=8~ir5!S7-l{2mx=%~+H4aZ(gXU8bv9 zQIxwvdi9f8US`wUOu!eHx5X-3CX>9rxcqFrs`6Qu%!;S&-^B3nO5DS>xQ82Y4^AG? zBI_ikojgSG;N&5S2PY3vJhXVY6xV~0hZYY)9$GvId2sR&h3S?a4r7So!O24u4^AGC zhhN*}cJV%+CG*^l7(^o-B&#!;V)#;?b;%x)YD#!LcQ8 zg+4FJrHQ>X2LydW|H2O1B+KfuDC*r{UELUUJk@iw)$DO8O7k9it6RxZT^(Z(mHL7agx95}Fw za^R=74op9!%gz0?eH8#A|3`bt%B=bGyWDJ}H}~RZ#d>1ahY@Z)Msd+^$1}^!J+rB~ z%{oic*c+X{~}A@Wp=Io#&jc8 zxw*5wthcvXUawbXU19EU``rQ! z$oG3&nw#bdvjKX(?H_Fe6ww9JVni26pb=dl)rPt_vh+s>ED>GA=Hf^cvAHCec_AFp0)?fJuR|L{riLlxSXR9hsY6yy=5s zd*4vkues`%wwB(Reed(BcyqJoE?w>u=Ckc-x%XC2pgEK)f#y)21e!xR(pqCYuL|z6 zHE{J{TI7hnw!(IWP96qvRH3#zU^E5`#cTN zx|8(0dJt^m^m}NvO9eHG`aQJTrGz}R+NFd%wA$7VJ)nF&iD@SfQ9L+#h~mM?Llh4! z9uAxP(5w*3gOG<74?-SVJP3Jk@(_jTmL3jch~mM?Llh5A9(s5%+wMAf%IkTu={?(@ zI)m+D>(RVv(X+*^bTk%g*O>|yRKvRG~d zme5g#xx+3}TkKKpvdi+@VK>{_V4eZo3;8*tc=kTZDhuL=YqI_d_&eel?^4~nBom3C&#l8)v|2?Sy zQ|SIefGKouA;1*6uMl7g-E#^sh3+-Ad#H*>bL?X7EAH@X z%ZsB(zOjLr8oAo5>vr>}B)!kjgzvo&3CMdP(u?;(BoFU}NDbZ#QSy5)M7i$05T&;F zLX^qg3(=b&yceQ3Ja{ieZ*uTnh~C)Xy%4>b!FwTk1B3TM^ri*xg}(wvFy0G)9eUw! zLNEMn=!L%vz3`tyFZ`F#3;#9r!rzBp_;29CR%`cmO6uIGYQL@H^3CQ?$=p0kz3mr0 z@lNyRL9flru$o6%T@9y#pt}3;bHH@4Nk0crojqQ26G@xAgYErU3{>aV_c>tdW>j-S zLYuu#Mx6zwZbluZIXc|XtWgS>x*2sI1GRa&#U6j11*UFB9j3Vgd!1SDEHHI5>MTHc zYm@|ep2OvCMjfU(+HDW1Q65m8j5-TU-HbX5P@RlA3ryXNI+UJ%Mx6zwZbqF2s7^+m z1*UFB9j3WL;q=xh1x($HI*)2mvXA2mvXA2mvXA2mvXA2mvYLMqd#`2uKk` z2uKk`2uKk`2uKk`2uKmP`idYzK#CwjK#CwjK#CwjK#CwjK#F*+uLvRpqzEDeqzEDe zqzEDeqzEDeq=--T6+wi66hVZ56hVZ56hVZ56hVZ56!Au15kv?`5kv?`5kv?`5kv?` z5kv?`5pVSsL4<%5L4<%5L4<%5L4<%5L4<%5@rAx3h!Bt>h!Bt>h!Bt>h!Bt>h!Bt> zzSLI)5du;K5du;K5du;K5du;K5du=g*ZPVeLO_ZjLO_ZjLO_ZjLO_ZjLO_c6Mqd#` z2uKk`2uKk`2uKk`2uKk`2uKm%>MMc>0V#qA0V#qA0V#qA0V#qA0V(1;eMJx;nPsbbj;8T` zSEHG`-_>Zc?sqkspZi^nrsRHCqglA$)o9}FcQu-8`(2Hu*M3){8MWWlXcFyrHJUg3 zU5%#7epjQ}vES8bLhN@nnghSJ`hHx`l1Z6Q9}=@%&&&O?{qnQ*s>)|sGAo{z$t15Y zuHHUnc{wYRSzcz-+N`)y0f=NCRftIDQ3;7;9@Ur-^X5@*$+16TKIYgTF&}g6kC;be z|DDbI^>S4_Wo0%?%50UjC%N0!ucm1^%a`fG=KM!hv99M=Z+2Iisc?~gKuTzt3Uzq> zlvOp+-$%=$gx#afSqyOGa9bT7#U`qY1D6Nc1F}_MWe-yGu~zuFe-9{ z!qH+!rVhx=H_oB&x7`d%H5qPPBR{&LrWA}4GtNXjx02?iMkpF3Zd~DxjvAR@gqZQ| z2K;w6o5R8%$EI`3+-b2W@#5EiNH8)>09Ot*lcr2CO3ZlWKO$m8Vv*s+nM3`SX6HkU zQZQP~IK$nZIiJleC0| z746uF5s5{Jm*IQN#sc1#ZL{=8(ms1M7$s(U$bUrC2t}jBjlTknh#Hw-WSDWLQO~8> z`B0-3jTSe~c(<#7F_9w_jutyIb>Murn<1$t!;Nd?M_1I8f>B~ds0PTW#!HP*G)mmK z!acXy#)WlT0){>qu;sS1Q4?aODXl}E*?dmKAIY{eEE*+l{52pf9HEltOEsx*l-P0A ziKeEFiX5S6WVmr=Qom)|Igz6ljut!4fX_}lPP9$7Ie#%A9xZ-^ih<0$;~e~c3$|wy zC$4d1*l~^h_)42rG)mk!b8$c+kWr489I0@W*m1=>K5~Sj5#q+TIdFAHHr#B(J+VX! z=|(3QC1(6ZU`*5qMWe)xw+4)f8kt~Zm~p02zh&APQKJ=&7B|j#&uzAGg6+Be49Ybv zc4X>+%u>Klj!ZN%+_l6}@zO*80l_E{BNL1gGk*DxhZvDqWO#ArkevKw6r&W37BkLp zxAXtmXvT@P?`AU~8ZB-_N`RVbhBl@hTg}KY;~Mv|l{1}Klz4F#h%+l@USec|QDVjw z?bwJBiA9K)X0{XUux&Ow`B(Bg2d{ zjruLk&WIYVXtcO-#@nm{Mn#TLI9lw;)B&0K#yRxcI^f%G2Bn$|H?EN%T~SjCMu{0` zBA#1G^HL)ejS@Gma7RatOfW*s4BmBaqdje(CNtA`cQ&pcY)>|P??v4FduIc!#EW15 zBO*p77$s)B@*fc~BC*Ku;>@9bOSAJKMkyFAW}M*$S7w=6#)-AbGv_aYqtW6h+EJZ=F?_pRHF_KFg9>@w7}Pd3|y9_9@HDS&_{0GMmDhWo4ZH^>2Uq{NnY+?e#K!%;I~xrg^%N@pMV!>4+yGo{o4D;^~Md z#M4(+PuU`S%$9ZXhu{BxryoG>(Tn~Na?!tqT=buXT=XA8F8a?yF8Yrl7yTC@7yYM@ zi~h@ii~bNY(mR7av$g<}yz}H2)`S;G5CYqf`7YJI=NCwhl$vhHDWFpbv#J^e|2_+(d z2r%MIolzAorASmbamKpcA)kj%oIv{?!Ulw*!itFI1*UjEDI$>waN@!_s^X;+hz29h z5)DpVp^l0Ykw7FEX{I#UXGk_K#;{#{meKL8^;7n|weCcs!HHk*L7@mt z@ZQ4+p-?nf@k)L)q{u`fz=<<^`YpT8g%qt&R9JBa+syOhp+zVb6<%b7FEFn-2YoC2 z;g5(MS+@wV;u`aDl`y49G&phQ-&qwfFDXKyXt3gnbzG##L?Xe-;Qiw^)YCRy0yBzt zr{em-_GrTQCL?Xb63+JecmrfuWjL7I+KqX#EWFpbv#1-l}%_c6K{SLdf z7Eaq_NigEuoA@_bjRhRYHaR=@=p-pgcPk%R9JBadsbR;B5g9v`HS#aRCtjQzQAPf9Q2+Gun^%3u;Lo?ag{KoNHjQc z=3ltz1(f0?MJN;vR$Q@;ixiniBsgiRsA#w9HbKX*fqa(IiF;uUR{Ww5i$$V<`7%r@ z77bp!x*rcMLZJw-;!L1^OR%${MJ*N;UYyZ3GyaH(kqSnI86oux%rDMi@3)lT!bxJsB(BpRGJrF2$G@sc7GiUupLSjR<*Oe7MV4BtOC z7VxgC8H!PC9|Ho>V5EoO10oSv635s)21KI4iC^ylfoM=75{LjJP7(B6cAW<$N|C5= z;*51W!;gg&nNU<%5z)Lr@p2CNR`cG2uYmLt;KViJqbgoHfoL$|Oulm}U0zCLBGKT) z73!!c5eY##O$wLQ!GG8EiAppNm$UNSh3E{vtdU6<%b7FHpjqgT58MZ{rx0VFIkU#(Z2Q zOeqo#PMrA{E_wl_cu5foMS~Srtm7g@CK3rw2JauYq5cTAk0F6*Fya?{NF)-a%a>a+ zk!Wz@)%#c|5eY-$nc+u6icBaftcYk{U_NmUdB06#NO}oy z;u`T$6)&AYG#GIv-#L{oFC{XOXmH{RbySpy1cDg(hsS)GP0RGI{^Qd;ue0QSk^Yd) zk~%BPbXwGP`ue7-(>klJ-rl9te0iVD@-my&d9g%QeTdCh7gry@%gV}_|LfoW^7+N< zi`(mE`j`!|c`ab`M!@E+fX&yy=C3U8RbA$*mErs;EjRy}e^|}aY)AX;C#!t1NXsOB zpI4V3;+lIO*W3@l+}AeP$Ku^4hbN0-`mhTTT=g@1Rb8gd2uoil=0eo2`y5l0Sc3FX}uo2LNWNz1#k8R^SyXl)(m3sSGxVie<1tR4#)J zqJkN05S7eegQ#c*8$@L@*dQvL!3I(33^s_0XRtw3K7$RS0vc=(mC#^=sE7s|L}fJC z;ICpA*k8vs_?y@Ue;eE2?_wML=hz1SCAPtTjcxGvu?_xPY=i$Hw!!}x+u(nSZSaq= z4gOcL4gS}$4gNQ=4gR;W4gPnr4gUAB4gL?Y4gQa@4gOED4gSxu4gN2&4gRmO4gPPj z4gT-34gMdo4gR084gO!T4gTM;4gNo|4NhVkoW(YH7u(=Gw!uHeHn@mwa2ea+Dz?Eg zw!u2K!FRC@zK?D2hu8-H-`EEKKVYzRdcInh=6}hyYh-uq*sqJ^G%INMPqWfv%%9SQ zx!II1mznKH=-mv}I!Wkdr^oqcFFQSsJ$u>daoX9-PLD&*UUtyg<~Q~PyMD^6dUK=C zwEATGlkcl9UjBWO-e>6aI>;DeF31?7FUT0;Fvu7pGRRm|Hqj|{5HfT^9b^ohP6ru7 zC(}X3(5ZBgF?1pwWb7L-)dU&)Hl{Ij3LS(Doj?Z}L#NL{#(o`h%zhKo*l%MR`&~?9 z{~Xg8I%N)G6P+*z8AGSbLB`O@a;sNxI?t4WKNwH>gRZ#I8Q z=4M@!HNCHW+K)Renr7&>O;e2l5Mg8>O|$YD;Mle{p8=4j5&8^pY#Y=qkfx>Z3^GIw zM>j*%fOIlM4M#Uans)ma8G;%%*)@cOqnjam1G0IT!b(>SM>j(bQaJ(ajJw zAl@1hiroQE zv9X$`EA|hVgD_jiTa(4woNCqPkvMZUX5QRT?eBJhYulc(<%iv282I%U7S|-p5_2KUc+p? z94~ZZG-SMn*?Ku%!)(1AuVJ=cju*Q38!}$QY`q+>VYXh5*DzZz#|z!w4jHduwqB0c zFk3IjYnZK<1Es1}5vt<_^=eSgarI!r>>gGBqzuGA}1V z)8Yvx(CVQz($n;Db!VQ>+|BEkpJwkjoiOXXnrE|%K1VhFrNAI3%@#`7$9C~6?4()P z4)x(XD{{RE~iL=Qq=P!aI(cnZx?r6gmJ|Q{>d@Fa~XR1P0DDfF_ zjrW+!mQEZBd^j^NSnBZ=;w3~T5CukDk&cNFkvIhSXqHK`A2vRZy@+>{`z)c;cDV|S z_@y2ci9pfv<(5z+3Y>V=J{C%30*TLvGj;kcwa$bRtw=ODamL!r?xP_^C=?A=WHcXt zK5-6tzinbrdd26&HR7WxUP^%|Fyc(Ub1Ge4N`xX&;KUW`s3?&MM1T?Bir%})+D3ZX z9xMJ#;)2<){)WV%z=vP!A%Q3mA`^%LBVMVGgb9nbAVnsU_?)GDz{6o~>Su24rsiA*2@jQCdc-c8nX^8E<5i(!!{aN^f{SSax)cvtrHTy%wn zqQHt*@?nuEkRlXGd`_G~=(p@T7gE$h(O|_HY%|Y~hZd<=GKWXV_bt25gb}9*`YpSHB8jgOtw`dl#2<G6fftH_uDiEX+AzDt`Q$q@lpyzfe~l&h3h^3eBz}^t9kKBXI`HU`L?a%nFD@fsYDwL4hbxA`?h_Mw}w(x70clO0*);;KUj0In5?cpyR4t{!nBzAHR5M zMG{{rt`Q$q@lpyzfe~l&om1)ZQX&+I0w=CeM@5NDAOegG-Ysq;9sg!ABn|~W{8|qQ zB>vPMVXGJthyo*9m;-uF8v|!>oHDfK^jIA6`EUxL-%=|ivEnO4DG&`toS`=J`dBED zi9~~w?TDX!*>Vo}R_^1dTdwgQQ`ypqBfdhsaX2&YjEa_0APS7QA{`SUB5@!-e)*U$ zvuT;$)qkv3<$9VW^K^NiFYl8ozhAz-sp_=Os>@H)x=yF_Y?e&&`r_*CT{_+TW|o)P zw9bp=#no5$WwBn)n#)>$fBEsVJ+wlK1mKl6fNO04H`)MhwE?`=27pxXN?Qdq07wNi z07wNi07wNi07wNi07wPb+A5#{Kq{aCKq{aCKq{aCKq{aCKq|P=RsjtFQUMJBQUMJB zQUMJBQUMJBQo*gZ3TOb33TOb33TOb33TOb33TOb33SMigfCd1mfCd1mfCd1mfCd1m zfCd1m;8SfC&;TG6&;TG6&;TG6&;TG6&;TG6ywO$x4FFOB4FFOB4FFOB4FFOB4FFQX zTWuB403a3603a3603a3603a3603a27p{)WM0HgvM0HgvM0HgvM0HgvM0HlI1wN*d^ zfK)&OfK)&OfK)&OfK)&OfK>3cwhCwfkP2u3kP2u3kP2u3kP2u3kP5!hRsjtFQUMJB zQUMJBQUMJBQUMJBQo*;{Dxd*CDxd*CDxd*CDxd*CDxd*CD)>%Y1vCIi1vCIi1vCIi z1vCIi1vCIi1>b9{fCd1mfCd1mfCd1mfCd1mfCd1m;9{==;RhW2&ld;-Kq{b(08#-B z08#-B08#-B08)W%?G{c#qyicMqyicMqyicMqyicMqyicMqypR8t)v1P0HgvM0HgvM z0HgvM0HgvM0Hgxj+O4Dl8UUmM8UUmM8UUmM8UUmM8UUmM+uE(90vZ6M0vZ6M0vZ6M z0vZ6M0vZ6M0^8cHqyicMqyicMqyicMqyicMqyicMqypR8t)v1P0HgvM0HgvM0HgvM z0HgvM0Hgxj+O4Dl8UUmM8UUmM8UUmM8UUmM8UUmM+uE(90vZ6M0vZ6M0vZ6M0vZ6M z0vZ6M0^8cHqyicMqyicMqyicMqyicMqyicMqypR8t)v1P0HgvM0HgvM0HgvM0HgvM z0Hgxj+O4Dl8UUmM8UUmM8UUmM8UUmM8UUmM+uE(90vZ6M0vZ6M0vZ6M0vZ6M0vZ6M z0^8cHqyicMqyicMqyicMqyicMqyicMqypR8t)v1P0HgvM0HgvM0HgvM0HgvM0Hgxj z+O4Dl8UUmM8UUmM8UUmM8UUmM8332s-!C`<0CiT|-tw3qP&fhrselFmselFmselFm zselFm%>}l#TQ~`k3TOb33TOb33TOb33TOb33TOb33T$h)k_u=5kP2u3kP2u3kP2u3 zkP2u3kP2*Tw~`8I0FVl30FVl30FVm)f9~E!M{?xK8msK8uCD26b@#MpMl-F^=x6n5 z*YaX5&7VesVHk$-!7vQNFbu;m4AV>|E0ZcFnIf58T?51Kqu0Il(o**+A z_uk|Hiyd`U@x-}t?z!>9Ajw7mxqyuTa)CbDE#v|=0>}ky1dt2Z2p|`*5kM|rBY<3> zk9G^WfQv0J(sT0CE8v0ptQU0>}mW zXt$6H*a#pOun|BmU?YHBz(xSMfQ}ky1dt2Z2p|{equoL-U?YHBz(xSMfQv0J(sT0CIso+U@cwn~vlC=wvk;0ptQU0>}ky1dt2Z2p|`* z5kM}`N4tewz(xSMfQv0J(sT0CE8v z0ptRGv|GppYy^-C*a#pOun|BmU?YHBz(xSMKp*WEase9w}ky1dt2#(QY9Zun|BmU?YHBz(xSMfQv0J%UP?G|zY8v*13HUh{6Yy^-C*a#pOun|Bm z&_}z4T);*ExqyuTase9wMP5$xEzkhV`{Nm;+@z>#(`pPVflG`*3%4@@LlgH|^o~u9CSKr2A5v-zQ z=@tGw?z`}3`odrpX4!)mhyJ@T-?cY;xhcu!MVJ)cJSr|`&$pX}B2@hY#4-vL`TJDR z83oe=P{j1pMxSO%z%cVxp}*L5X~*X(KtG-g^u!g=l`EiYS3ozefSv=OUu)Iou^-%d z%h>-xS+G#9@Po7{{L=*-gNd{pgNbAvgNYO#gNei*gNbziz1IESf3E~j-$#q6R6f`i zUXX4||Ekg*Wx6Q7+HUe_5qgXCKB)@fko*+SGDN+hD@ zP>#81PCZ@6sa;2Nl-hMPN2y&$b4a`Y)b`zd=oe}VQW~!|-FzF*cQto*8JClf4>#$3 z^(W<21Qc=$;29P0A!9UQ7|j>~f1>+%k@?Fsv7CsUii0xxR2-D5r{bU-JQW9xOQ+(X zv8XY=1%4dOGd0m(czLjm@4P%r@-*A|;pPi1ZQy5%DDh)G_&m+iZLzw1)4bB#to%Gg zrlD^c^o0@|HB8;t zFk;lzjcuESpWS(zEXvn@rgnimwQsYZzT7l+FVyZ&5vlU-t^D}*dahQM=^9LB#-d*q z=>|YIc8ngUTSew?7O5U$E}c`hqJ<~qEnJbea82IAg{cKJ2|P(@ zqYh45FzVo>1)~m5T4?AnBliPQ3k@BJT4?A%)Phk5CrUT`a2$h^7K}PLX~C!iYT*}p zeUTSgq;|m;o*(!@+;a|Hc@b=?=)Th zB#5`_hEb;Wakh!tw7FTRyC0_eMW?_iL%M`h?sEyJtmYD~(RawFmVM^}uF-cc;2M30 z;2QJc$GeqkV?I%vA4@NfmdUOvU4F96RO+dn6ZJ#AD}weu#-XAm$vD&j>kW$@K>J|h zxT0OLaj0mIY#izfFcgeKeMy4)ngsO?3F^lrsGpLcenx`&mIU<+64WmN>M!-UKF`W~ zn?afcS*T8XsQWI9aKHQ9fBD)^R1JO?s!fh$*{;vC7rwfkuIg7kE9f{7fhzdy*&`mR z<&6l&QRsieCOHLk5=_6~k(>fL3&uzRod#p1fX;(4Qb6Y-^=l5va{)PmkpglABL(CL zMheIgj1-U~7%3n}=vN+!If9V_as(p<fE>X{0Xc$^0&)Z+1>^`u3dj-qK)RSC z7%3n}Fj7E{V5EQ?!AJo)f{_Apgg%fi<_Ja#$PtVbkRuo=AV)A#K#pLffE=L@q>DL% zkpglABL(CLMheIgj1-U~7%3n}=mY6uj$ovK9KlEdIf9V_as(p<^`u3dj+R6p$krDIiDa1LX{0Xc$^0&;{tkS^v3MheIgj1-U~7%3n}Fj7E{V5EQ?p%0{sIf9V_ zas(p<M~xyM1V>g935{BL(CL zMheIgj1-U~7%8AJLLW#cPe0*vxq<|d3NC7#5kpglABL(CLMheIg`arsvBN!fE>X{0Xc$^0&)Z+1>^`u3dj-qK)RSC7%3n}Fj7E{ zV5EQ?!AJo)f{_Apgg%fi<_Ja#$PtVbkRuo=AV)A#K#pLffE=L@q>DL%kpglABL(CL zMheIgj1-U~7%3n}=mY6uj$ovK9KlEdIf9V_as(p<^`u z3dj+R6p$krDIiDa1LfE>X{0Xc$^0&)Z+1>^`u3dj-qK)RSC7%3n} zFj7E{V5EQ?!AJo)f{_Apgg%fi<_Ja#$PtVbkRuo=AV)A#K#pLffE=L@q>DL%kpglA zBL(CLMheIgj1-U~7%3n}=mY6uj$ovK9KlEdIf9V_as(p<^`u3dj+R6p$krDIiDa1LX{0Xc$^0&;{tkS^v3MheIgj1-U~7%3n}Fj7E{V5EQ?p%0{sIf9V_as(p< z0*vxq<|d3NC7#5kpglABL(D$ehUA(j*>9Q{M+I$_x}5E z;f3!vX|Dboq?=8cc}3=L7HOJ2zs?K42=mJi^cN#$H|Zu!ym?ey%wBCbd9(<-W79u*Uar*nA$_-i%LI&_Kf-wv}e?h zpuL8EGiLv>wAav&rM-rJEbSTfBgmIV{XCA3pgp601nn91L+yR4$G>@2j$MJDEaGrK z+&!!RonOo@V>Ql!QEe#76DKHFPEf9$pw#^`ws-4(8H-Z)%UG1UUl7V~biS<9Jb&== zB27YXo<+f(`rm$(<-6QDuF03L@53ltq>Zm`frN70%oCnwu6UZcCTK=IZp)!fM>7=K zbTmVuO-D0Gn~$__!errP>0)P-j!)46eNVway?P1;>atTXT=d6{gZ_99Fd8FQkVWe} zO;i;N*E?};KHNlc>}Q_;KFVhgEAzI#+ae15*jxGW?e#n@igZnee_5m(0N$nHc*?e@2BM9= zyZ5t=+GSWhY*zkWoMG8^8VX9c(@;>p{ak0mV?^pdg*T7W;BJ>PK($87#nEzAc+1RJ z(}~qKzEk@y^Ynes^$mTpFpt!(OF0MG&ptq_joKCXS(X<23ofshY64uW&>Xk_$^kVO zv^k*Cf-48qS8(NkstT?|wY0y7URbO05?uL-PQa>gxtoHHM@IQD9vS7!cx04MCn9&u zjF7L!BRlHn4$hAHxdR#XbE7OjgmIkSs|C3lDTvcFT7>!=lco= zEc6R~?L77$mvKWc{;j^a-ak*@M~mnOy@B4`JfFQR|K+XJhnLloQEeyOG*%@|K=$~O%wX&+(3p}^1IuBCq ztU3=?SBF`39;Etf71~h~tyL1F+F4cIJUuX=1gln7od>CQRvqWMNLL+>fagJ~omJ<- zs+Cntq-JM1uj*kXGq36))y}HpvVfK~qsn>@t5#N>2dVyACDK)WwMv3iJFAY%f&{Bp zR-Ff_c2*tdI>`vwXTZa(IuBCqtU3=?t*kl^Qthld&h<0Ms`DV#&Z_fZ)yk^jq(0aC zRg2J9H(=7Nyh)b%anBChm-<3=LPp(iD9Xd0uI`VGMK|1ZYV5D7J1luV=;lmg8?wlv z&3%-Gs;kodJ)PMLzbO1*rS|#CeY}HHu^(>I`!IX_4cMTw$A2=T#lIrPzb3$+5%+%+ zpQ8Vp_!Rx$#HZ+god0MTah3n>@eljoJ^o?;yTNbjdvV||_xOkT?;f9`|C{|Ytp9(f zN4vm(7kcm1-6S<~q>BgdJ}Oq;Jj}8v+}~Nc{HVNlu5Rmio7hhZ&tHaU1v4HQ-R>KY zjBfXhM@F~%#v`NK_~Vh$ZT|7d=or9wWOPhmJo0NWlNpcvh79>*GUQLmkUt|seoKb@ z1sU>}WXQiFL;ejJ@^8tIe@BM=Z)C{7Cqw>sGUWdtL;eF9@>c-)*Lse$@UuHF_3ylm zI*OQY)nZxAgY==>%U5bSTt6t0M@x0a1x=1dK%!aE2uL&?8UcysK_ej11ZV^#n)!@? zL{pv-kZ7(m0uoJfMnIz3%?L;|tr-D{<})K8(L`nhB$~mDfJ9T55s+xk(%6W6e7IiZ zY@kyb);F!4vS{zoAKzp_1CCP~txb6$7X9~jcsk?o7UA(73Kkaa%n+i{$_ybE?aVk% zP_&)r)+UFUA;hAc8A3E#nIXiYof*doDv=pNEZUhNM5C1%R4jTXi@g5pX z^Nb!A?aYwsjKc%qLM+;uah#wMnIXiYof$$jdTR!YB<;*NPEa?aNsn85YX%F8c4kO* zMqka~>5SfIk6385GUM2+EG*iYAw;9MW}wb!yrX8No?TSus!n})vhnm|ULLb5-v}^| zvS8)K>2h}-ZP-fzETGVv0W6@<>j4_i=oe8^sPKk7klMIv9xc6v>X|t7Z+9Is`>6R- zZ>5g$UECc0tcc>`Dp4;c8uB0n*xq-;;%1wuXK~eAG{l*_*r+!%MC$q4vU9}Qd~mys z1*pul#SSH2FYCiEl*7880RVoA~^jf*5{JX92H3olpCDOQILcN-_b z`;GU1?cPf1C(H6-j`FbL?&9_nf3I)-p!}Qt+q%#vVJ>FRRy7{le0N0P$>k^NDU_{x zyKc$5L5zz4`Wy^f51^01un|C?f?*?oJ_N%?0J-1^R}vx@un|BmU?YHBz(xSMfQ1w4E?^^oT);*ExqyuTase9wv0J-2xX&0~&KrUb-fLy>v0J(sT0CE8v0ptRGv>UysgYEeOVgkqoY(0Qnz(xSM zfQT)@@?$OUW!kPFxdAQ!L^KrYZnyNQz!xqyuTase9w z}ky1dt2Z2p|`*5kM|rBY<3>k9G^WfQv0J(sT0CE8v0ptQU0>}mWXt$6H*a#pOun|Bm zU?YHBz(xSMfQ}ky1dt2Z2p|{equoL-U?YHBz(xSMfQ}ky1dt2Z2p|{equoL- zU?YHBz(xSMfQv0J(sT0CIso+AZV) zHUh{6Yy^-C*a#pOun|BmU?YHBppSM7xqyuTase9w}ky1dt2Z2p|`*5kM|rBY<3>k9G^WfQv0J(sT0CE8v0ptQU0>}mWXt$6H*a#pOun|BmU?YHBz(xSMfQ}ky1dt2# z(QY9Zun|BmU?YHBz(xSMfQv0J%UP z?G|zY8v*13HUh{6Yy^-C*a#pOun|Bm&_}z4T);*ExqyuTase9w}ky1dt2Z2p|`*5kM}`N4tewz(xSMfQv0J(sT0CE8v0ptRGv|GppYy^-C*a#pOun|BmU?YHBz(xSMKp*WE zase9wzRg#=_AjrOS$bcr22kjOc+%eseGpgU zA+ED2KJ|5!5c!-w(;x{@kH)$N@t8n4XV?Vgdi!=$nJoe|i{J8m<{#%veMHKk4 zxANoL>v>uf>6);G%Oc$X_*a@#7KV#_$M*8lUxp}^jTfQhHC}|$)p!v~P~$}?C5;!M zBs5-x($07hN;Km|uWiJAV{_5RHWz(rbJ1ru7rnK)=nI>Rz62NjT>Gi2175z`#&==n z&C~ZgZ-Glc)0h5rn=IAvmiwDHN|w9pX3vx-y*VD`h9jVH?hDN!SVeglt9q8Jv9>B_ zJ05`lNBY{ipJh>)^<2;xREsnVR=06_uX-xT(#`J569&~j2vnC&V1cUC2@t4eodAI< z*a;A*o}B=Js@n+=sMdYjNThNsRnxp|6BfIi0O{AbYU3;Or2d^3r+f38o9@z zA`6W}MXnl$ii|c66?tzQDzf7^ROHZcsK~VAP|*x#94eaPj6+3ppmC^Zk~9t#&7#Jk zqG{GRR5TA8hl(a@2Q!^&F~3N+^K#NPe$6%x+pt>u7dkt-xc2^J6q5m%2FFj{3RVaCs7h$6IS=4NI_I$fpsLdhM)ORE-nh&22 zJELKH0E^f*79UAiW`{S=A~k<1MrU}?Gr4TYv_&_HLp z1`T7)Yr<^5EC7p&#=x}MX6pYul0nY`+fX7t(Iuj>#@|&65NTs8BuZ{WHJGR+Qn@GF zb6um(RjbIApDfEY*E-Gh0CibJ8??e241kJwV*y<;C|ho=fN$Qmf1{Rvi_i=GytqnK zkT*Z?{(~gVik0y%@^riV3(&~D>dXpa_G(*AI_7bz#u&r4)N~^f)97iwQc@uqCn*wL zNMb5o6@DE5s6--*h)5%IQcbelNroh+k~!)#EO=(ZRpy!hWK2wQI*}C!G@lwdc`$2G z7YM2v?-^dv*irQUVMfIGI; z9_Ei}fm_RXaztVp4X6&5ArVaF zWD!wm{x4jv#}O#8etm9Hu4{VN7B=4X6)OlZh@QB9+W}HFS!1UNVWs zB&U-(?0N<T?{O zjD+g~G5!IJTIr+ZAeBm02_E;1?PG5KsFt|aF^TCkph8#&MOF5ClaDeeF{O-Uq^f(< z6N)ez9czCNZ6iQBPAQx{#<;aMfyhacA<3y^j=G*Z zoRyc%ga{D%4e?cWG;zd_+1KMVMyclMG2rC39|` zW7+GMi7+NHos3aWQzp8Qs8n*W!mWcoc{NBhGWD;VjDJz@tMtBgv;2djCA*kL1FFN+ zM4}5xOr`$fFg20LA|leroKyp+c;_XOWJq!*<*O`Qt zz#G?q&s_t)a1Hpxdwde8t@C(fL{W@k99rVWKq8MGd1)!d>xY*fk$WHX^S*os1xB11*htl}ti(VkI7 ziUv&@QnY7Okf@TIL?mj`s3TFECMk)UG^$Bc%uQm_v}n|lrb&~OeJy^Z*OBuuT&dOH zZY9~gn|k@-N}Z5-@Z#`Y2v5iif_mZ(>dGC|wL7Sb11PlVVbNEkpbqxjbU4Y@Izgy>U%0o}{a$l%A*93NkoYJW0Plsoz_*p#8sibMt z^DJo=kF)4Kjq3CTzb38B5Mt5J3?Uk=%n)MH&Www}Py6%M40MvlDT{VyNOeZ}w27&V z^K?e_ERm*hoS-Z;dTRy?i*{y6b;e<4P_gKFhNiz}pu-ubxwVHzD>IJG%EF?Z8A3E# zqlplUc4izWD2pbo%n)MH&I}WstDM2JN@GmaCK zMU&o|!NQ`Q8B(2bm>I)aG>({^xczY-6)Uw>k*SBZc6SrNX2oyxo=Fl`7u9D-7wLAc zHc-@2y7>;_rg7+1JrZ9;fqGhg<;S~P-#CA{e>!bjJU*eeqYke9 zFLm(u{(H5{bRYU*ugMQ+`wG9 zfw^`AQ}+!Th)?XB(J*!2jE1TEW&n&I_(9}5tnG~sv&Keszy&t)ybEmP?~}1RY6q&t zF0h^TcL#50{oR3$`uj^gpLu-e$~w*cC~%nO4x2!|@309Zg2N_UYtbP$vVd(A9Zk5_ zqN54dT68plv}nvT=2`g;iXcsbEYvR{0_%gu4r`#61=)j(^^hf~VF}cDkx{UU@-SBG zm&WseeY2@g8&zXFFIRnmy7?aOCR3nq8tbmzt@_nAzAJB#r|)~N{kd*2j+U#!TW0=) z-5l;DDDyn-Bq;M-?j$JleC{MD^PKJ^sJgGvOzI>k^W5$vDD(X8-*sMX(m2Xj$_UjX zwe|bOM!tZ|4LYi{ZqQMYb%T!Ts~dE5ipmW-I(Os-9leLZ4LW)=fg5!6t^zmc=umWj^2Xc1|7W@!3{ckQ$l0HtJm0xdTr~ndUxb*)^YiX+Dh80 z7r~Y!R8s7H)vC{PrSGFf^n;4@@rC7<1HkFH z!^VNrafb~Dr{f;-MWaIFPSIw&-l(@@san~1(eCS8b*MsZ#^|@eUtX)NnEPUd%xaH_ z9BPkMaFSw8L&o#o>m(OEw35uN4Zjq`lmBRb2+J)*OG+#@>6$33F6 zeB2{C%f~&UvwYkmI?KoB&hv4P=qw-ih|cnHkLWBP_lVB&agXRMANPpP@^O!d^6^)C z|HA*lk3(O*@6Uf1=H9J(#--e)-fh#&UaI%a%Czc+YLI} z8?Z*7k#avkN8JAl-S5@Ar*}PAW2NkO` ziRwebI~6aF_e;RW)>vFrT*l&}5;GPT6`HZQsN9UjMMbCakjlNEm0PaKLmX}QpQZwG zH*S>c?^%TFP@T#?^^+Elk2(39SZ&Ph5^wfQeNEC-DjIv}yMtB$0a>aM`QNsFR{T)k z!0tPX-ndNNx>w({adYy(8rE>*sBr{io9yl)2I+d^XMUl-i8<(dATQHxu~APPs}FhB z<@~3QKghRp^^wh>{wc^7Cq(Ke_T_mzKC>@Rq<+(fJdejWIt(I$%*dS~q&!Z^5KAm>-U79O+Vr zHnu^rRY$t2ml^MJ<>uqoFTCPm6JDu(1s_a3tub@8t>GFoPW^>r%xm=|Y!YUUQJ+Q0 zJ3o$`lPym>W(6SII6fDuM`K)nDbx`>+Nf{@kM=7Z!J};p8~Bc+UFZ;vBY2m6-@)Ex z-*>>HzHgkf-fXjtdb)k^=XGD}-Mqrjmf`*zpTJ^`U55KKU4-g;yj%5RwEceH>`nb| zuX+$!Z3dN_wZk_79l;}+9l;}+9l;}+9l@gwLPzjJ_6dh(j`G0KaXW{J*#Yk|b2{K% zW=;pZ%gpJ3cbPdI@B=bu{|YscuU<49;(|!)4Wh@dQ$>TJV;+wy#r?+~#E8@@MR^|m zZabb zi1BD=h!~MphS2fod9{2yLyl9`Rdw$n(py8Ac(gM_u0syrW-i8~ogv4m%A`yyL&SKr zGenF?Zw+A*rkx?jsp@K!8Cye`c(gM_u0#522v>(#f0gUhnd)g7a%^3$4oTDvgq6)_ z%3OEIVTKIvkj6>A@-|2F9R%)P0pq9#gVNL~3F!O0=kT{`M28r{r zpVtw2zPARU(VK`*JA;lr&rGP5LE?Pc8FZY|+#S?cgP8fWGf2LJZ0Ccv7VDX?w=?KC zrCpC2J%oB|5Hp{42FZ8OVFrowX=l)}#h4XqWso?Zb_R(PYK>yzeA*dwoYJmGjj=U| znNK@|a9To_-sNyi^Du9pB=x=(q;7tp51oR zuonO}W>qJkp;rLfp`n)mHg+N(KY~Ve3UdtnfU|UC;0K(g8v{S!EZrFR0cYvPzz;Y} zHyFO-s2-ZP*(7EMyvxk#fOnZW9q=wQrvu()=5)ZL%=uVv*B5>qm)|qX_m8^IUTxLe zR@HaW;xxE3J#~K?3aa#tXZP!mtJUrP@vB{l2X_q6bzfUv_Xo@C{%CpKHL9{l>P(uq3sUwz7b$jd|;!{VZR2lq-ni&VdZ`|zOIFpN@n^`qPonDE~X{xatO3^##F$8)QSexba}!;|CKXj}aK^mm~&h(d;>fJaOmmlbNSc5DY41f}6FaVm84F*7yE+fE`v3<}4u|Ur#P~vAn}OR%p%B z$S^ZS(GUQ%B<(G8JJrroE4wNp4pOr+^w(3BS?PpvQGo zHH9twXunq7jRrvW#zz=jzf{5jG#YdrK%?Q<0W=z@PlZ-nSodL+EmA#%qtUmRls#ecRmGdO6OG zMm;=^%W+#qy&Sh?)N4RnonOp$uv}@BLHi~QLvUmNe4Xa`pxa`N?-V?~4=hNNAPd!t z#??!_7kcvx%qN=HN6B4zJFon}-3MvX_@qSrDbmIqQN8H>@q45WJm#<=gVP$f%=D+A%e!s6b&%~1xD(J& zt~XyoT7S^i_4NCs78--h@Cp7&Ei{G}q81th3Q-Gv|!Z1Nef0D zoV3u;;dn}f_KIwEAZnqZ15pbN9f(>m>fl7_h98b&aMFTN2PZ8UbwDjN_u5u!Ut0~n zYxRmk_4?K3VV~J6H4j`wh59~|AD{SUR(CC+G0t5JXnNSzJwQsX>$d2=CGC8>H{$!g*h z-6T8mfL!COojQcO4ayU9iTeLb_36XirLzxJiN7yTVV4`~gFe5d->S;gZtFQGR12Jk z+q#p_)$YK1lR4h)a7cneWHk~-Ilt}n(cYow0+LSSu*#u+ftXS*|xe| z?Y7kAYPPK|S5~#usS>w1Q^uZd*Y!c(<*fS^S7r)I59W$tJh05a`ko3xO^jtqjnmex$|0O|FItCu0ui z^OG?L^zg};6#a?Tr(^naz>4&*+hnP}m9&ZdT9v^1<(ul{+-_+$ z<2D1@05BKQ6^^KcT`%jNl>%yLP8!PGbeYA+m`?!xc=G5badPNDEZJZeQ zlXp?PYi-Dq(l=8dG|<>5KfW`CroX2&(AXxY zX`r!7PSZf+X2o#>XbyQw7a28h(ST6{7Y!ISaM3_RgX7ydF4DB20Zju94QLu@Xh73| zQ3Dqu8#QpzfKdY%4Hz{*4Kz;N6x-X|`eUVivyjG3>HRDq4%K&N_ZQAys@HJjQC^g9 zJ}NhdXV14A^>thI8C>-bFgA^ZMIoLJJELKH0E^f*c1VMCJ}>v{_cOiSvUrvMlbM_84>Um74S6`@I?wi4TZ?y8D_V@Lf&2Q{8n~~I5pZ)Q8T;y;YP%Es!|QmF>_6r``%s-lh}Gx1 zO|!s86+xFGwqNLJ!tQ|sb<#uatp)zwewdnFs#yV=f(}PO92)fR!~F>nFe)`pAT7#K zt=P^L*|gk^vpw)V0ut^0HZ~nMzUs}?zf)iPQ9T`?=NSCrkCZw(?s*>WBT$ zL660y;*0jH$MQvc)?;zezV%pKw0Aug_XTjnSlpLHxUY$D-w@$`OoaO>5$65uxOKW)-DQVV9aClIAsq_$Ja_b@uYr|zH?RGZz#f-1G!R#4p@(Mrc1Vl*Xj z+X{g$9kCGT($NaiVQk6 zpWFlfKG>#Nm$TJu6YeL?;G*U}VO*W>4Ie`Fm_?qa>mH)*DdGta2BIV#0f{oQai)3^ zmUH4lmAy^6@0aGL5a^>5ARMqjNq+(hl+lguRkzENvhch6#O6qF!%pv8ZA5i;e5Kxt zT)Lw0)vk6=iZ_c}l}PB|vD+GUFAY4tQXP;#n5(F7%| z)K&RX{vVl8Br(zIWX!FpmOi1Nq?Iy;eWu0F$hpct<6l@uC9M@nsX&u%H-oQHh`Llz z)O1>>5tdlW2t;+ zGGP@Jaq;WRKcc9Fwd$=DQ`5|b^0LO}^DWlYd>ErGpK5k)1el_~7WN<|YCu~L1jkp4Tr)u!i< zYY|*4d0I@uI`!8Ho1kc?6sFv&249+>gq7+o6B87QBqmy&jJY*z>UVxZ2?Zsslrijj zPyOshDI@2}R=@tJNJ<6mI3*Mmt*cBrOtt*U#3ZbfF+0z+`1J}!6O^!0rl_YX6iH0P zI*niRRtR`~SZD8#?6`AhP{K+LC=(NuiYO{!t@G>`F%{#AK5b4E-GQI`fG(5?0GpPpTR?NwJ8c zqSeZnVZ)|@=O~s~Skh`413z1D8Ch3ZX#9&2aY^e%R5WPEEu$F2CWMa=C(fN{)iP-@ z-BKtOm9SRE934?GXr0w77FAfnYMJ7mu2@7-5o^`AC^4N{t+cAcKC!eD`${G#VWs+u z#T2C?ib`0k-dZt5sc3?tRmzxN!=`~}D3w%H(pnkgKG)I8NP6IM*eVC5)uO2vv{Q?I zv1p>A)yl+qvPDoRC}E|H33{$2uvaRgsD!mLg*{oRXo4bEYW#w+Lcpuws#jWfylF=& z)53jVO}B_iSf>GX!XhYPp=g2;EOXXhy+ z=b?*Vi>RcvA}JN(t{QtVuxpk?tCUHHsg^&Pn1ppQ7Lqe9e!W7`1SPDLDe9>TMG_OS zPSvPMdLp{&m5D8SA1!y`5|b^0LO}^DWlYd>ErGpK z5k)1el_~7WN<|YCu~MT~!FAN9truxWs@|2A=@051n7;RimcMT;?1gpeuM-m#iY6#w zrFzT61cf4riB>0LZVj9Iou5!bK}joR4BNV*(~eR`&Q<;y|H3*dX{|^~g|t*8LD4E@ zqCC~|CliyfPBdkL)=|Ae(F7%|lqqWKdM+#!NlZwm|5!&!7-ar!@t1r5eYo(#_nS0V z|6Qcpc^rDdw(x>%8!bFu(bkzV2O^6;a^F-pY?}ujgq|r0a{zXX?j! zlqUc9=ifiNcz$tnmH6w>b!(SJx&cl7QWKnS=T#_arbynab*6XgC%Z^4Uj^0A7f}`l zg(8g9w+4LTn&Fjez-s{bsqRD7N69kuiftTic3lUq`nkSpo~8GRm#?<*ol2m2`o8DV z*ZNZb2R{z|p1=QC|NVNq@a9<*+~qyje6FvVM_I6{Ga`?cIwfA;`azT|z22O#!9wX^ zgM~7|1`8#D4b}}v4I8ZI0PAf-M}Iv}(=kF?fgvTWz>t(yU`R_VFeIiG7*g{St)?F+ z_xav^nl5%$zWHzy#j&4x{`)AOJ%Efj1>?N~j2{5TuXQZT%zyCIkf{dQg}03TJoh$! z67J#x0F5%Zs>a^k-(MbArrGl%T`tu~J&y`Bbe(|r#4+BLW4vp}csGvmo;$|7XyTzs zoUOhN@DB8KfOnv;1H1!$9pD}4i|~G>3&6_H7G9>ze^3N=eg^)3sjr`halHHMo9BK} z_`zx&CdG}yOBQO9a`}Otr8IK|)dEZGL3P0r`yhuL^FGL@5!laGYW_>p-5t=bdbup>_o0y`HyRcpLa~HO&zV59b+H#w`1&s{vLtdQJMx#qXu+$2ehl+?tpgH*&WcX`np}CTy=CC*HtgK zab0zB8`o9;cGV?UecXlZs-L^CUG;Sr_Mra$NYATdwb>hH`z^nlFZ8bhHD!+ywN<>I zSU;_9CConDr1xPtmp3f6ZJW5d5A%Ywg{RdmNYW;*LZ3Q_VQ2wX3$kdPr)uNA2-o|?=b$Y(J2bQzXNQKi$_md>db}?Rl zvdq$Lq897wZh*EwS~gk(qK#u~K(u*m4Tv_7tpU*{vNa&uNVW!i0XAc-0bjZXeC-cP%=Y(R zXRo%KawkU}B~Ukk%Q@5K>-#Xu7HNNJb%BkltP5;Za9v=d+IuqgjIh5uu$}dH2ez~R z?!ZR<-B=Q=)#h)Oz6-rgmTvszHs0UCo9))t7niU0zbuWg4AHb>Jq+8=IraA#oZ1)4n<)y(*=BrSjo3BDWYQ75f zm-#BY-axZob6aSNYrYE2W6f8g$*TD(G$S=%g{Gb6tI*uid=;8Nny*5$MDtZ>Drmk6 z&G(w;b+(K0-m#~SWEQK3yx1*(!A!AnuqIEU+go*(FI+Bn7v20sogWSE>U-Qp_(77Y z4FvUr+y&aRM{E~ZAFloPHMMX7@P4Pa0XJzJ=ucbT>D50FBDB187vc9YCW3e=2mx92CtJ9YDM4>kihg`nm%e^>yQLaiVHhd8)WP z^jn?%+!v(oN2klpY14Dc10T`pdo^hJ`__ZZNZm;WgEo?>gBkGr%7mn$iAGAB{zq0O zBn?S0M9LV`XmSNjC>k+sjPcfwubq!?jAW}+Gya8jIAZFM)B&QYfU)cAI?(qjv3hFM zJ#{J%Cse<0O>Bs?G4=f9ikeI?Qpy+;(Ygi@xu#bdnrNi7F@-xhX-I;hQl=WkXig-HHlb*wv@z!5*%h{4afrf^QpXhU^u(cw zhDw{!E4Mn_X{>Zi_j>E?j=pzNcdV(Ul<6-5Q<8=z8YyjhYrvGGAqj>^8Dkm^o2H$S zG(ypcX=9Anx1fI4Usk`u9GWjGQmhGLsJ8YT+=HJO*B&4n8H1` z(Z~a*VR($^cMoV zc&G|nU$#-jBc)GoEtr-(MBxyrV@#%DQ?|2`M=TyOeT)%TGlPims*8GG%YY?QZf$JH65-6pfTNMr)m&b9%)g3P(yEQ@qm? zhb9^-ZN{%dD+Ii9tGZ({%TSA8q?8#@1T3Nbgun0y<8j@g$lrfrO z;56-gq!EfnOdDgo^-N$&;?RU6rVdFRAS!CcuCMDr@5Y)%su5{p>iNkPHJMLw07@f4y$L6iTEQ~c3MRvrA>bgunLE0BH&=*X%&u? zI=yAUDjF$qXrdv~#%PS`l{Kkw#MChcT+Ij0$vZ~2Rkj)b!ag1`eQ1gSQE4-Feq9Xu z7NAzyMx>6Z@26MVgrbqs#+Zxtg@DL8z2XpsBc+Zh-sy=$6AhI%qt~HzxIdC*s7)|Z z%Jdfjn`o#?T3?>gL?fk5Zw;7|G$g?gDPv5dVbioTl13;RF>Q?TRx^P~i9-{Pm^vhN zfM~oicKxu$r%kF6X=Cd7$rUx3V5F2WCgQo3v|edwqLI?Z6z=4tAqfU4^P6>)ghA%t z7Ju1nvrQa&%h>-RTzEy8Wqyzrh5!6IFZ?3RFJIsKL6j`LMU;g>5v2(#`J+IeTwFeT z7iPJ_|HnW7{?Wzri<_&&Ux%YWuP8vTDL`*1K%WE9UuyN2Sr{f>kS0ME7NNIE?-yaV zlOA0Dk-mH$F0wSZ+g&hw86~$-63w?+;?1K1Wy){_l)#^84*4eA2BDY7{(Q&d=4blX zDyfPn@MCY~$G6vWmD=eV1ZD|(S)?0)_;bx;9{a&vUZ^kLddgT)mhZ^UUTrsdv7MXX{IA*(ct8`847JWqM^{HqnQEPEJAQo$8{e$M$r}9Bl>Q{R3$pbZF?UVwe+`s8Rug0p!McB#1)yEnq z35!*=co58<@Ip(CXyGz8MWu z_swXSx^EE7mpa#WORhpCPPsLZM@wDaKUrq!Hc@jg^~3%Z%s5n3uEwFF;x!Hxm9lZD zsIZMgMP+Ur>I+Z}$DzI?L48ev`i2DcV-nO)Nl-r{L48Yt`UMHIJqKfFd z(3@}7cGbSL&fe7j_BL6V=W1nIZm|vDpLNy%s=Ce^Kn2)Y1E>}|YXFsHXAPhVZP$QW z=?&fGch-R0Eb55BZ5DMj;5Lgo8gQFM9Sxu?YD{3&8a`QuUf^e&u;^LV{6d$o_DZ<9 z0r1m$13>+#e||Uu5+zvU?nCS+>W-H#u+LU1ST&*MbqcT_T;_)UKQ{A&@WeP z>VF04W}~(^7iqe`^)h=|{>xh_E@~7|W&Y+1-M2~$HSJbgEBh^!r`7Gw*-g4pcXP@= zFK;T8nDbcOo-y5uA*FS7ALhl`v3gn^xi~voSD}B7oz=>$*;!`RnXqbS)|t?1W!9On z>aSTMrL?zZiLh#C)^ULsq1DQ)Ghx-vtmA~2>8!)i@Jv{>GwV!fwK9u~)$BaySv|CR zYZjW%j+_1Uuxe-4adi-()yk|hVbx!=WIC&_W{I$BXV!6b5TVt|tTSQN&aC5vrx^`< zszYzh5@FTOtaItCzO|uDXZ5ZPMQF7$>)3`OtlF7%CbW8M7V4~D>HR3HlXi`xnd+2* z+Ne^yAKtAxIPB{)f0P}^ZfTwK6`ME_})3<5B7+EbRIQ891%4@L{T?RK+U5pSjp_7yJXQC zzK&-gXm0D0M0>Q7VbL0#WJt8<&&LBdhaj!2kRj2|3Ks2uISx8;b76qierOtkZ5Ox42#}c!O|72tT;A^lM!TWt>7Th&I+Nf=&KbhUD3*l zV}o$8=&cnTB-&Xa)D?$WF`PtW3oKZv({cM9nE~hfz{ZaqWF@9k#9A4rkX1b`0 zR8MBvL%9RFe?)TFzTPPqXiw`D477`NAfb9>eV-MBb|;5jjrb3{8Zm#V_gaJ4f7lTR znl;W9KWgUgnR*x4=*X}OY;+vm1vWZ~eloT?BR=%qBQCI=^>+tvXZ_uQjrzOk2LDb! zQu{)k$yR6R)pL>RxH+0e4!Rii*r1D1mkhdiRLtl}hCwZ(rxXTVJm8_jAdA*{svfbg z5C0!L&N_SHtCwM^Vg;YJx&#lr&iWoEXgu~fiop|c23O(?uEiPLh%8m_!uBB@G(GM;A4Qia3$^qJ_g7Od<>8m_!uBB@G(GM;A4Qia4qfyJ_g7O zd<>8m_!uBB@G(GM;A4Qia3k&oJ_g7Od<>8m_!uBB@G(GM;A4Qi@Lb#rd<>8m_!uBB z@G(GM;A4Qiz{dc2;f1&t_!uBB@G(GM;A4Qiz{dc2fsX<5!b@>4@G(GM;A4Qiz{dc2 zfsX<50v`k9h1cR<;A4Qiz{dc2fsX<50v`k91wIDI3va}|z{dc2fsX<50v`k91wIDI z3w#Wa7d{sE0v`k91wIDI3w#Wa7x)+;FYqxyUiehp3w#Wa7x)+;FYqxyUf^SZyuil* zdEqm0FYqxyUf^SZyuil*d4Z1s@&X?Nr^cncz{dc2fsX<50v`k91wIDI3w#Wa z7xbxdDKGFbKwjWufV{xR0C|Cr0rCPL1LOsLYFx?-d<>8m_!uBB@G(GM;A4Qiz{dc2 zL7y6z@&X?N8m z^r>+vFYqxyUf^SZyuil*d4Z1s@&X?N5 z8kh0{9|PnCJ_g7Od<>8m_!uBB@G(GM(5J?wyuil*d4Z1s@&X?N58kh0{9|PnCJ_g7Od<>8m_!uBB@G(GM(5J?w zyuil*d4Z1s@&X?Nr^cnc zz{dc2fsX<50v`k91wIDI3w#Wa7xbxdDKGFbKwjWufV{xR0C|Cr0rCPL1LOsLYFx?- zd<>8m_!uBB@G(GM;A4Qiz{dc2L7y6z@&X?N8m^r>+vFYqxyUf^SZyuil*d4Z1s@&X?No5;K+OPofv*pc7x)+;FYqxyUf^SZyr55w zQ)eQ2mWPi4@&X?N8m_!uBB=u_iTUf^SZyuil*d4Z1s@&X?N8h0rCPL1LOrh2FMG143HQ27$7g`Q{z%z;A4Qiz{dc2fsX<50v`k91wIDI3;NW! zlo$9IATRJSKwjWufV{xR0C}OG!N=<;34_ePE&h@R+xX6V7e>kR>%8!bFu(kKy^V{= zQy*Ih^`{oRc~s=+$sAj}Cl{B`-i2ANKIQO_fByZWi{}?NSBbw4ZSk%g<6S$(yK#*7 z+%et@$9OLt!5*W4wQJ zjQ4xTc>nGg?>`*l{lPKbSB~+%ag6t!W4!MjVRR# z0(HQ!V}Uwg*s(wzFzi^M4j6VUP|>jSsjk(xae7})=VSk!zpKiZFXHHL+i2k}!cDP4 zv-p!hQ1v_s1QpAZKu~Qw2?UkGlR!}AI|&38x|2XqT{{T`m9djRP}MpK1Qn^1Ku}FO z2?Uj(lR!|#ISB+6n3F(IJ^7`sC-+gg$Kd66VH~OnpZXu$c)!1K`C6TCDyz*R%EF*f zCy-Eau}4Ie#vT!s9eYGngX|GeL9$0g)v2)p+0XBb?d|Pu@BmZ#29dSD43oky=k)4C z+`?PNe%`ktXslpXezx%LSLF)n0Kwb%N#AZ*gS;Q8RP??1R;`=%8(FhA^}oGM7UsF) zrVij;49{9e@F;~H!J~Y31do#25j@ItNALsEesJb=y!si{I~(>L@Gdi_1KwrkbiljJ zoDO)GnbQG}GUs=CaI8vK@ZhUqv03|uRIX1nN*op5?KVr)QQ=+Dy=mMc2vmKH616Y1 zA7r2A=~m6-yKjq)0lvBqb5$QZZ?}!XeVU{h4dKv-gny-bI9Nrwn!hZ(B&=pLgEp-i z7QV0VYEX?WW8eo=h%xX3D#RH00Tp5l{D2BE1|C%io6PAbKm*2>!R$NWU1m-Pyvxk# zfOnZW9q=wQrvn~k&M$P$s_yHiNsxtVV!TQ37ri%kf2%K!qvfjbmYM&c?hBuS(IBu0 zcekcve-q^c?oIz(6R7WqZ|CI=k0H0jKhu{6YQ32~c)7oc)zWe|BF>(vRYo;^2jkOl z1oUWG$2Ia?Iw>FF`@aL< zY5#ZNqyBH~fz|s8Y6`sxi(M%J-ffK9)s%i$ID0N@+}k|ZKXK?chfN^K9X5efci03H z-nNO3+(Na_VH2*k=!n9#79C9>EgD1NBJ-DO>o{EQN7H@_&f{%4bExMoJr->Ey}7{a zxvH_m)>EA*Q$+hu;r&!kSJb+4t+qeCKlU`&amgP}zvS!FFZt^9OTIn*l5bAGey+tPTc1Yt`lw!&htU)W7qJ%-<~1bbki?@`L@3@x|;W-Gucz z?|9`0D$t2-JYi_#ilL2bhBl0PIMUpxhod%(dN^vssE4CA8hXqa{6W@6Ll3ex8hVhm zVbsHs<_&)w$Kj|AqaKdhFzSKYXdK_z-yHkf*3XI`>cML_q7B>jv_nHXpmu0zGqka- zlW)|#q>L}m)AcSwF!(h|WYIb=k3KngRB9wFn!JyMMRWU+uxRQ(5*DotM#7?n!$?@P zt{4f6mK`Hu(V@?gu;>`*NLX|*bR;Y~DmoGt9UdJCi;k0yghdBTN5T#`a=P%dyK+6_ zxZc{p4yd;_umkF?4eWq=YXdu=-rB$psJAw-1L~~}?0|Y}13RGJ+Q1H|w>Gc?>a7jz zfO=~KJD}d$zz(RlHn0Qgtqm-yx4&;}FYn(Y@c4wP-l=r4>FBa0!=BvdI-t#NN31-R z>E_6T8+0_BxIsswiW_t^xLBZf+(ksUTiu{L?Dr1t4*R_W9rb(TCX~7Xsa`s=7;xXR zarb(z?jj}LdYiAZG+iIA`Y+$Cw(7K%{-xoy#Umh*EF&P179${$03#sLjA{fVnoW&> zL^G)okZ2Y)0us%jMnIz3(+Eg3a~c7OW=$g?(Tr&XB$_RafJ8H;5s+w>)PS@&OxrkN zqK=5lKLV3K>&sl7&tvB2kTuF`r|pGZL=S z&iEJBA&II)QX9}T*TIy*C_!BtD9SgXMkWO&S?pv2l2pi;l-6~D&_%rx(L^MvktyU! zN<3}*lMTpN3@)+H9RdKNrn0ggH1$)lLk{tRU<4-M3Nfy)`h7_ zL=q68LdKLDHmy4|iG(5&)yNogz5jh)qmhyDG;3XdNF=p^a6A%&{FhsgOifG6r4G8zv_cQB0yb(G-X?U&z{I9-&Gm4W?Q0gd&pE zh^ROaI;mGAqL3t2GR1tBqmqemT^q(eL{Y2UTK!RKR8`+G&&EFH<&SAWYZsEFO8v#b zE+)!?*Oz%zF-huVDj-$Go1RQWArY!%Osrv3yt9)@EGAK%j8UJbpNy2Na`E)cp%C?Zjfj4{_UhV$}~k?_!EtVKwoDv{I%StpG>h}SgLua7o6Z9y)nQGZ>q3W;#S(7VS# z6q2M$y`^DtBGE)dsF5+NhE40vO(dz1L{%~dUCkS&ClgUjqB_wO2*Pp6C_-Hz`WCWQ znMbISNrP#YJfVmrH8SSqSr)urk%&T)RLK)ATw(-wb(BU0~5$@B;H z7E0d>G0We#*5{H6^%sVzNkkKoq(;4UVQLbQ1VpHiF{Or0>&{Ffp@>8^GRACOya`7m zBjGCTjDKMrlBh}~wLw%Ql86X3GVz^cv6Bf%QX!hUK0{34_ePE&j6EW}7(l^3^uJ3o~z?zJGq57k&}u7njf8g;^e@$v^)2_m3`~U))?J z{yO|jUmN(@yKv!cw(HGZlBye7cB zA;5f2fZ5g^xqgi9E->4=yTEMg?gF!|y9>;=?g;a(_Itj`wn6CKt1T}tkCyxT+F^W9 zm#n~^xCFa$33lxg?8YV7a{%^bLrqnhRry{hJ+tyZc@eI6rTpf@O%%s|=K1fVeD>fH z?7d5{9{|{E9cJJsi#Xf`cKNLScYZOujPZcffBln@*I$ji{(9u~b^OTmL*uu3E{mCA3G2Vou+YGxVx^IbmN{7nC)np+l8pr(c^Kfb-5r$v#jL4J+L zzbw)X0ROqBv`M3+P}~>Fs(Fzn`#iq+>HbGvv5JDbB+T>6BHGNJt^8!EW?^WqWsUyq zHrwXKc1_p9^*UN8uhKPeHTQEu_^0bITN2_Q=!;U{oxaXnXzS~|fkShY&T!Z`~ z3^%GQtKvM*R54R?5kJcEU7yWfZ8v$e2)#vmpH%C}%h&f|lr7T6QnSB@#y5gyqD~`0 zGgPOIpqZXZF zHpg9QZp?8O>D5U;H&|+S=14M+brs6z-<#%k{&dIeC;2wtgz7$v@wA7d=4QOjsWS}+(V^X6qUgpqH{;dL*qnRqjLo^% z&e&W#y7Agw9BMb4vHI??xps7D_sZG`ht0Xy&e)ml=*DZ;N)>Z-<2%#XTsu1A=G<#{ zQgleWH+p0Z{B5j`G459uH?MX-@#5%j+i3ChUTqO(m(Oq2c^EGa--R*ivvH_s5;zVO z&HTopqUqi^R5ZsMhl(b4<4|9Knbaw$SF!)jcb!;Apf2+22-HPd9f7*Ysv}SrNp%G3 zBBzc(U8GbwD_E#A^LdiqyUr|x?IOVtwu?MN*e=oyVY|pWgzX~v5H`xe-!%u!ccJ%A z-Fwc6>jIwV$GRnR2 z$SCv1Bcr?yzoOLh&+MsHj;a`*o|H?byMdoi7sXh^Y`GFR3c9W{xE)}KY zv(g~zPHf`|LmO8NZCo?7abar1k>*A{9JOK8!%-VXJsh>s&|}8n53)8IdXTlz(1WZE zqaKblZ}{Ul4o7Vm^>EaNQ4iEcV|}|)@4N6eQBprslc+oM%h=CzZ{zES3HwI~HJ3@$ zn5XW9WPYF?jP!S7A-J^h2-M>PJ>#Fbw8Jz!fAmW|Z@Ty2tDZ^UM~mnO^*@4x_geJF zSdP!-R@dEr3k+P-m?Y-A$FIwa<8(i}7IsBov1@Dg*}VB<)pe=b zJguj7UB8;+Uj;+wr_BcYdCWQ~^7FXBJi00J_XjHvLw|Jts_G9keAwq{chG(L;hsl# z&=rqviv0ay!J~0{e(ta5X?pU?bT|Uiq&aA+lZEO@<^6c64r#~x7c11Sr#L*P1j^z` zkgel0E+8)sSUL&(kR^g_`b1QPs_|mM$4T$sw(5b?A6(?gIBY|@H1?Yx!Z=Rv_b1Z5`uxal9tetSqf75s8}hTUd$C`ZE!74@nQHFnyK2P{ zNF&#Fug*);{c3O6LjM#Dw8lRL11;|xxjT>j;I0}8da|$K^T*-yHcZqD1efYa?e5aq zhfz|$QLuc5Z^$Us*j(=~P)^#dhA;kR>v4_0-D<$&Z?=99uWlEWVb@vJQkSdQwz^#H zw$ydj>`chJJ?*yCMfbZ;PO6?}+v;+)+ftXSSu*eTbaP8xwq&l}y-iT6`ob;W%iZ7X zZ<`a(XWzpAPS!nu|MeclMk)vN(c;PDx&wXX#?QbnK{njFPzP0FsZ!P-z zTbn+x=<9DSa`amZFMMl}qu*M1;TsE0zp==jZ!G%y8w*XpvB;foEOPW4o4&Tt^c#!Z z`Nkqg|75}KPZoXfCmU`SeefrX-1(D5j{eCacm8CNqkppS+@CDG{hbB3?=1S@JBz;l z&O+1gEOO^NiyZyV!VBM7c|6+x`vPOHQuol`j(nXW{%G)cbYS>GjZmr{CT&d#S$ZnMdk#aB9!LyeU6> zzTGUUZ?oVJri}u1#dJo&^Z*nwZ4}k=^R?Ud;k!Yf(>n*R$$1~R$%CLEmmOY4K0naJ9zMu$K!gtIoQB2A`S#Ge-?2di22)y z13}CmNE`@a{z~FNkh)J$=@ORu9&XTMaE()uS-4S;1eEW63evUu z1c-VIaP##CGxhR;WD%9$+%DgYaMCN=-L`_Ni`!OE*>T$nsz+{HL50d~E2x5vXr<#_ z-{??`+g1p2tRohJ9P4O>AjdjdA;__gR#1*LRxd#st97(`kxE*={iB@F=?@6sd|Lms z{gr@c+vHBYbuj_^3M0`?TNY!X4ciMNp^ZBtW3lseTdZh$d)Sfg`a7NF*RzZLT8+@jV?tsW5A`T5Dd5!xx2BZt39A*jsrer`d{e{rq*NikB9fmFNxMu3m1amJ#zDod*kBy#uTmlVxTR`Ipi~WNT`@?)aO*U2#)%PmgJvcE2+0eI* zdhobeSeD@Z*KB*jZS?Tt0^HpvWL;n*XS={g)^~wDur{a-kDmTkBk|CE#FKey*@X zVZG2Zy>o(qOzZHsD3_!2{-PaocuZWjW2$+Y&Y0?DOlOiYqFmY;BTA5I0~Bx(#Jmv+X;c1&N5;p~{+8pBAYH7XrjiIGb?V?@dH))Qz9V|31olZX^u@nW5uB z120DhgBnK!>R01C{Vuy3bhP#71|4nwxj{$Ue{Rsx4OTbk=*FrAy4o0R-(N+uD>vv4 zbEbp4!<^|rcbGFB=niwH10Chet465|)8t{d(>-`sbua)LQ5!cQoF8U#fsHcO1vbi8 z7uYCUU0|bJb%BjC^-p7Fiy4w1x8UBR#_lGXGY+uXgx0+o>xuOFL$GDqrPKB)kfV__n~@O990v~ zwi{Y4Zd3!bN|Y_o>QHtPtqLW&x82amT>6c&ftyNW(iSR>DO-S*2`w&NRwmbNbUDIZ z8?Z9DYXVdzcMYJ*%H*&GP?_AdKr&}K zbTqC^?h0((MwcVpwE-)WyCy(oa@PQ=Om17C)d5r{cOihvYr8@f$pY9=-cly*;%~^ZY?QusB!WO{(9X@9tSTXU!NMtZOVb-F;us7PLBt*1unO z8qsPC!7*rc$_HRJ&KyL^ZK}2w%GV?Hy+N??+@!w_i`9eLSP9~-de72+>+`1Zm{;}c z3{M?{2(QXrNkGLK^vQPP8nQm61&FA-i9G71sOv0et^7o2|O;~L+UnS~W;x}(Q ze_z?(^aoW2)ql|4Lb+E_{eJe7s)bFeylJ?zFyWBUILQ;z(|n~)IszRhDicjivN~O< z4^zfJE}2L|B2~$lSQ9OJLNN*JWQ_Ve%bt;Pm3+p(untOCDUvFIcFmlOxkef4DnU`q zNp&)*Fww#%6Oyb-#?-W~5TtJEm5C-MS)EKlPgEw7kZ4sJy~2G=%^%eg*D5Aio%$<; zRZz5LuP^zCf|6CLw@6G-D4Li^bu#AGu<73U2_+Sjuu{gbtGUD!r6P(-SSy-RK{`$u zg&4NjwaPzIrA#_ZwfqUiB&(A#JI}QE^$JB4l&n&wsHZ9vO-!^p^({O4@9I{2n?I^0 zZ>{5LA<3%LUm|Q`BArN>5~~_>X=0MqskcH*PbQL(NL4Z>*0AZ`*~ugnldw+4sOx?6 za~qwEl&4zv`hy~=5~SmkP)wwbGN~}p!Y31wtV+hzJkPS%D-%sjvO1Z9o~TSDANKE2Oiw7Hpk$TmFA~!eiY6vfos79PaJqMPLP-TBtdueA zdM+_RsfeNy){3T7oc&_gCjUs4GU+hY@+TCNtWHE_g49vHLJDKy?R;Q{Kk9k)2F*|=;i(b2+WR>bK6LwM27Qepyql!vaD^n?{s^1i)A_|IB zDPwvKoBExhRANyHYh{f4TzzFEU8SJ$FGhqVtQJwdARVuaQVg2}K0=&0VItMaq{L*4 zpj1$@N*NP$M6DooRj*W3QORm$3VX6r5d}r7RNpGZbOg0hs*d`^nojE}nV4jC>aPnHIlZp@@Q#Rmv3gRE466iB_la>%$5GuX(FZY2C~w9idFC z^nu0PA|zRr29yYkm}F(5iAh$c{t7WUnMgt+RmqrGbQOZsO+qmV>tu|&o<*FSpNy1; zE_E$}5>|?&N=Q3u>_NY-sS&A8CKV=H_+&zoRmoUG&a>?G%0v^BtWKt&Cn^(3NVFrzfSIvFWf$!Giv>!5^{BB>I>LXpHos*{QF zL<^rxNU|!?R0vWx^~yvOldMjrpsfqJtV|>!A(ei&j*>9Q{M+I$n=H!Ley0BI&9f-D z^A_oL9*15Y`}615dEpmfe)BW^_wT~2hyp+MR(^bYJx_}wU0+;2Q$Nn5H2KFr|Nha% z^NX9S#9xQ5TDdIJ4QS%6Cbr0;aN*sB@y46SX>hkA53c-IedWr}7G4}JSB1CC{0C13 zt-533En`2=dte$p6J*gkPZRGpOoH%)%T`ey#;Unudwbh+*_WDh9IZnyNRuE7i_qJo z_lq#=x%y*$b+OF~C33i2?ykA{iOPrIPVuNT{~$@d>IeDFYyHQn!EI7JOI5O{OF_>% zYo@qQ8JhW^SY;tcJU6%LHggovvq!N=#W6JEP8!^ZQ(1oKF zJm!X+N@Q-TPo`J8xUK!=+TYbRP^5mU|9lbUn=r|B`Mi96>jzP?^cGPT289~dE@nR| zvS_&sGgTkwQGuokr=dO}LA@eDy(U4uAwhjkg4)gjG`AX;18z{;Ip7Ahoda%A+d1F{ zwVeY9wK0L5XX$<76=A04L26ptS3!QQD@c&e)s#6e%6XBy>9d0d3^V6nYWj;X+^Ffk znno@nf1M@^FU|TUu#HLHQY{`9Rq(r-d-L2^{THm(VN%?v>147{)%5ZMT~0w!9tHY@ z0`!Uk^m;7lvz4DL9d~I5=I9>nz#QG79hjs0^D2)Pq09Vi1CH*=HsI)PYy*z&!<+Rs zE}~8Bv>&@bNB3nH=;;3J0!4lLxh}npU5EQLjdukU6o|%VgWBbay}(~@Zq*!hciHSk z_`XneVH@SEaB*?-g>EQNdmK@swr%!B_-VCK#?jK%y&4-i8hTo7wR5y|75a`snz5)tdKz-5Qcp`Jm42?h(cS{>+w*Hoos?-8Vd8DFFweJ{+J`HrQ9C~t^wb;2K?AH;HRzuKXVQE z)-~W4t^vOUfS>77nya;5UGeVKNxoenyy-r~SdO8lBZC8PocBG6U;e&zrVth4=|zI} zHAo{Fa7%eAqR@mQqDucA7E&t8z$B7Tk{qQRZM+8tr8{^iHIh~{IfPag;RP(p$SDq z6;rI!5``oZ5>2Xcn)cN)WfQGJOyU%oP()PeH~r&ZoHjm+$U+p0h%WzscW0N~wvj|( zDUxlCGABQi-$^nvd6`*+H-iI#kc49p-~l1a&W^H;tSCzuuv-!pn5b$tczL_@6vrl; z{o$*st^#38&3ijqFenHsVgQA;V997TlYtBk2yKr9q5609*T7!-(=*<+YzH88nIU%vYL723bovST!+IMK7- zj1&wC#fqBrW~4w!5KhGC32VVpkwQY@SP@~PYcXeD!LV?=KoXy$1%iUGB5l-G3FDAZ zoM4h3ktwPa3<|}H#G2HpB5gG6CYWDgzo`r2Wd8iTmD&wNC-s9HcQ6fY92F)bJrh!s~%q0hMb7&S3cKBUv0<1xjH zp80VwkTRwP848ACMooT0Vn8eiFJcUZwPWdsp}}y>h`8?Tx17W#h_p)W+Yl`Vn8eqFIxLQ`&m&Rr6xv9@9kwwm{BZ< zgI@|DcUJ0UEQ*DbE$YAipgdWfP_{r&5LUzh3TwxrA`Fo&EEbLzk=EZ=P9LSi>d|0Lh&NO8q&|*R zS}-geFObAXoGao*4;v$6A`D?gy5_b@7>9)7M2x?r3YaPdgF>+)vD%UXA(?XW-Lh)R zqRX%Qw^vnH+-BEhQyxuL@5^powap)Y{{HpJ<;lf)lP}Akwr{GdWtkOu zv#2-!dH3|r)3dtjr>cMG`=>Vj-|gq$=O4;N)_$lK)o;TuigvXsyX>YLcCSGEuw7)4 zFY}w>-FfrAsvqBW@yqrFMcyr{Ca<$a)s;m*T#r{SrY5e>yrs`KKkXQ@@+)_yK$bo) z^T|#ByuFY<#un|})etZ1I=_0l+Rv`p5ORH03|IR$udiQUwSC_%CpJB6>9f9FO|1Ll zcFXs-RX@ab+Z0`?2Gz63UJfDHRRcv=F7Ar5dn7&k+fxt){Jz;d)e8MuzT65NcetRWAh>}sywLo_;&lQ;gnymvsK>T zKGxQWn0r@*^)Eqae7m!|U)tQdaDP7PW-w-?>u#-_aac%R#3+nTe@w=xVlXfyGZL*eF%TAz z7uQx{|8mdfBSvKzlrbC_k{LbyA6~KFiAhoeq9M6aD}W_67#NHhF^s}mvxL;JXjpDU zUe^Vfk^{nF*}>ES%y}bT`mk{`D%3D;q$_W(sF7euX2d{Dt)!`HKr|#b60SKl7#NV5 z*@K#=H8I)f-_k1or1BB(YieHf{5K>91H;M~_3n8@lwo=^DIvmIvzQ>mcoAbLtTl^) z!H6Nju*`_K{+@F(IV0}X#hLhuXd0FqpA@_AOGm@dvIbF`F=nLeZmpbgSV&$l>5s`6 zRSX7(WJaP*tdvPxwbq&GU8XSXcrWe+(=(=zQX}7N`pdB=3@BrS3m@9b7*Z2Z%wlLr zZln@nFKg7sEFCjq7zMUwF*KMKfJKAJ8l6UbMQV8?ZWdXgS#~THHC+yd2IEHBtGS{^ zf+3j^12MIdrm6waklaYP=G0(dKxSNvwfnwhSUr0P#62f9OqVu)hK{2lxzTGt91cki z3WsDzEd!?HfM_so#7MGN)@V2^J0h^_2U5x%akqivXB-d952zSm&K+G32nSxUl}FUv)i_EUpiVZ@3w)GCu#mh2|ftXrJQ`LZINNyxtb80X!ATzV4PEWhvoQ64R)X7GA zfxok%JgwzeM*}p;i=O|6#9&}ZX4LdIBnHBQ@gl}hSZkJ!7!nN2jEEaunK7q~xK|fv z;wz$QSZ*LCfTackgE1p*)mk~@u#mi9(jSvCsu&Cm$&5rBU6)B>AS_c}eqB~gS#|F!ghir|j4z zqB;sF2inttn?E0o&{RnnB&sF7HdvDcAwoJ5qbjg{OH2|8iEBxO_C13+O&BJwCrE)n zo=c(xUm&!vMPvFQq$SCL&639BS+63E4VGUt_y-7Q{sLq}B&}nlMO6OJZP!wRp*CVli<&iPWxxFenNH#WjVg z63FvO)DSk>Mg`+3@v>6=_l>1%Ze5z>*EC}AyLOxPhaiG;+pBtj>d zOX7}QPfE_kr~anEL}pH2lT70B{OgFips1!KYOA6^ zOi)j=XI>BeqDI~*B&sF7L_{$m8;Ju9yirV4PkzTUo>catlX^yC?qhp9k&u?eWC?5c zq9PBOO)Ms^Cz0B95e7wpptz>&6+TgeuM*}epJc&k;Ugg-vq?n~Lo>~?$6}&-lAw)h z!XQB{&7W|UNBG<|Nvb6mkbT@m5K$ckRJ;fzWJ7+4@iqd9YDq5+5kyo;5F(@_F;N0r zyu>7tkhqpa=;#`b%q4NhF7m`zL^E+cK?(#{69frqN!qZ@lE)#UI>HnOWG1PSFi2EO z5_5C~r%HklK^?jFZ1-14Vb$&-E~me;b=SnyKpTZbwWJq^C?;qwX^{tFqIy#6gFQ_c zB%~!Vu#6Tx78BQ#NbNd^ms3mRAkiJ{PW8+F-XYvL5ixtHZKN= zYDp~)F+@~J5F(@_F;T)=ywoI-khqpa=p;`iamPk0p3Vd*5Xh28LPBPf;CQI`}1Z|56k55%E$Mfp4C-9b%cbkFvalGb`SSu z-rts8xfn23D|Pq3Zr{0V*Xxhjx*vW}N_N#%#k=f&n4upDE_P3*Wxnp!u}XS@k5KJ_ z#Lb`YKg}B>nzDNoM*)S=nj{Po)skKrtx19qAsvZP71-J)CW(Z^wIo6(c`AuJ4xQ#B zLXYbSQXr;Uu|piSx+Vw`(vq}cnmc1I32gA9n5drA`VfUg)r3JpS`w2bti?-C z6N`!KNu+iigh5dtD6T0?l|U9gQG>4%+P|0;6?{lfk_DrMkAy_EB!*_1Wlz-vVxoGI zpp9z6AVDq7o^U<$e$ycGWKt(5=>`72iuOeLj**?}NUsj&Bw>)Kmek^4P7;I&=}3&K zuof>hNhBn$B@sHhh9gfUamOz5#8*T!aXmo_1XmLT328~%u+5UkA)-3M6bED`sgf{A zR7(7Y+uMg%lVUUoP#J~z{ z@lw;oV&ZxdseK1wPZS7>YYI~(kZpvh!B+|G8(V+pe9zVh=}EF+wD6ITsFuXgOtb8% znm|lcPZG3IO&BDoCD#E!pGo$yYih)ONVk;ECe4#xA>yErO@#E_xjS%CP~42t8Y6?E z)WR3Xg!ClFR#>|i2ZhWi8Wh)*i0yg_i>gpmTvwn{LCz{nO-GuNJXkG%EGDWaRGC0# zlqw1ZMKvW+CwfXrTlQ7LVCB7Y+f;OrNg9Npt%})A+>sFW^o!m7s^_{NvxX~^ms-uAF zU`-MRiE2qN4%Q?=h>(uNs0wWH5|czi;#v}+eeYmS6NZWF2~r@CjkqWwaIB4pJftPb zfz6V~A)-1G<1)#Dr%J*gQ7uW#HYGubppIPig+8V1u8FCE_94~wo6)J3^x_c3glrw8 z8zt_X1u;=QsrA90CJYkNk{DQFEnae(SWH|`BDL!v42l9laZO>W1oC_mHH3|}QNf4w zBv~+8_((`pOJZoIS@u*-ASS9O3EHS83=-7R>7x1PbPJ8l3w8Nt0+%dJL1vE zPIaVL2Xm4zNK{K|aWE$dLWFcAMpamgmzpFJ64#Ol9bLnbr;@m17kT0R`F9bt+CGLuwE7$mACi8;E0Qzb!&rX2lySv6(R<=6e&yQZ%CtScAm ze)z$%S>JZW?d9urpZDeZ;(PbM*>zr2%}utby0Yl2ws~{cyldL~=H%?n`?6aPzw^hR zzkhvld2(^ygSuE2@6`f%u!3faupu4?N=_OF>9ao?Mh#HmDgp~=I^padv`Vb za$V+)jQO#Zm%i9P+i zePeMuyy;_hT{cCT-3;0A_}0_Ut0ue8>pHut`jd-ap1mdS7F9FAKP8G6cY4vT%ErC? zNT2Ic==dM&bKv-&d%j8QU$=+oO_zVnZtDEEabV>5|7c3P3+$DE~I zdIGlW@&K@|ICadq5aP%&XJMgj|7KeS>UJ>$(t>0}wa&_0OhDq$cZENLC-)`R&yvMJ$@2T^}qU;_&BfJ9dvBXrx-D8QV z3cJS=Qx$cOC8jFq9!pGB%x9-h(N)X!5NxZiT(9rCGF#Qp2Gp}JpYGx$!F=-u2%n3T6Brzc~1cUmbkKe;jdpRcOA&buuCP_0it9(1)2 z2VL#AiPfGRCPU}&zSPeDXZ^;|Wc2Ourq%7otj~u#xsO+6;-jA3%5OhZi)u5K742|s zyWvi7`_vSiezEz#>~{E;pp3aKdiv#^Thnz<(v4Egenvz233)r8+=?OZXEemqFOT~+ zI=R@}8AlI$KckZiz8&S}|2TR+jpnIQJ+k&F`x!+KdpqOkVee-YJ?!m_qvz9T zrbZ8YJLBkK?`IS}?Cp%B=hJ9D@X0l|_8fORYNi)ipY~*xMOL z4|_jq?U}OmukB5={_d(A?)7xT^K9;Ex9hxlyjgVirT_h>=iH_ap2+2`*_7hx7Yp;6Qt7DLGwrZ88+2z{-I-e4n(0nV^@rU-s}t5*&9}ZczCk1E^rCLq9n|VU z95%-$zPCK=$E~QlaB5*Q7zATuQ$HvcjDlsgb{H%VV_fH-Q_K8uu}s{FqQPwKSHqw` zSXpaE!@BG;ZU=Q-^|JM;W&fmDb~flYYxVX})*1wI2+i6|JBZ_2FX)E2@+DK$%Ig;^ zPq+HU3e(gAKPeVy2K{9)N{_5dE%gV*Qt?1!sMhO;aXjqHe`yB;i=$z?Hi-I-S=`y7 z3#oPfve;QaXvJZ_7W6w&zc%Q%I<>gd8q6wn7=#^XqnC1@4maDE1MG%_S@|LLeygzz zw|n*kwcQ^U+bvt^S?&P;s934q4jLkEm5Oj2rwG4StlDnP%!;W{I@Sof&9-sN*Q`T* zu5oyAtDBsgqyKMgFzRZ(ek<+-ebM|{tZV^Z#hHt#)j&P!L8l%?wfb-%!i`IP#hFd# z)Mom@yyw(z<4z59BUAq^4E_HV^?@4|cj+-jUvlFA`^6%?VPF2Y%!VJu+3?>f*2}(a z>C!Fm%s=Dg-*ZTtZHw#tchn()WedatiE8(v!6596{sZO)05RE*-58 zZt4N<)W9&#iANC&>wMlW+~@sn@p0#Up=DM|T#_+`VbD9m}+KB3cU9|hd@0+B= z4AdxbpxS}xQ|lW5>v2x{VPA>Alk@KyR`3AM3c^CIe$*AIkCumR{J`xNjrxT%QM(y- zYqL>54ik5b>%GpM7(lXm6c}=TE{CH0R=Ga3ecACY(iqRN@qz>!Pfg|MIiA{}C3r$0 zP}B?igH{+%uHWc~!JxG~tj+YJVQ*|=on|1a6^>1A7xqnN znBEHoh>vae^YIPj0!5z%)Xvv57$09hXt$%eS~NYaP)7@t@&RJYV^b>s`8 zt}L5>OhXiLChE_xGrn*-YPH8E)}8JL5>7NCi7OUN!40(8h=+*omN_c0I9ici5>dZ-sODLB~HHoBDBK3d~~|U!>1#d~6ErjwohdF0H11>iAER z)9=d0n(v@WuWo_&eH$W;`rx+z8J@f_;hdA+WVN0 zO8vyMKYV1wG$+17u%!}zkrY=2F5^@H0C0*k#f;$2Ugne&$c9-#OZ9eSMz#-fDgd0% z%BWLsg<_7|ZLz0)KLC5517L6u@iK`RBtY}8cQ&^koLVOm!pQmDZ#ek?k!yy5xb2}r zhjN>Jh0g;cid?mX(k{3NFJ!%#Q-%!-Wk^gT%EV3FWrBVNDXDIO!N zf1A4o*j7B83HpjfF|69fu2n10x|hjL=rQ>`BdmFV6I~FCgw#m|4VCHx&gsEYf~@@t zwHvo9us(+2nG;}YTc3S7l?SXW5MGDOfy6G6fzFQM6aa8SnwPL~!p+=~fz(TYphKFP zUs_+|q!q*~qo1}m#Pl={N`cgi-3bN6`tS2p&MTqKc6g5+T#5G~77#CWRCAKYkPtjF zSn6FkS%CX%w+6N8VZR$R3@!YBD3A6p3PTtVgfO44^;*hED0nO;yDdox6}&;7>b#My zp-89%joR({qFWF}E$yq4EglG!EVYjimv`U|3J#1#WDAPLCkU zRVqD{L|I!{30&z}?h^r|XuhZ(nEci4oc{dFLNcs~Fo(oWmf#8Q;K2Jf=7n3R^uD)q zUk#M0lleJ+WcBQ|Bth#VC6681S`32zj7b7N#eEUr>O48v6hkJdSu>ya6?f`zp(?6T z(T$2R6G%{!_PvHn8Gu&J2qTs*IgAbQy_LHK5MP~kw6ndBai<4gn{ZnRky06Wp3GSy z_}aNyVPkS=i^}>aw@t7i>OzpCCt- zRIMp1j^BC$mmGv_m#&B~4fuN;aDi`3IWLzk-pyUA0H8j)7-ALqPE9c)SNH9+cMd`A z<#b)fxs;0aQq2|}P0+zhQsOo_TA_k%>e-}*%V~9o=JpWkHqY(w=_TB}m+PLeY4m?o za@t^r|B;z$O%+3$Kkl_8{`R}K^EvmnDPn{9=~h=Q$X0b+%!QeNaI-jI>C$b`>}=1O zYf$cvBzyakJu4$KU*bOBz#7BYD2h3p`#SI;4XJ~P1#x%hZPNH2&WC_W6sMjTY86}H zS#_ys0D?IQrMt?vl>mc_IAHK+g`h+$T1`oBNm?tZFe{i<2S&cc`6!4K^+!9n??vt| zAhPHOb2SB;@#rq*oG%23a&}gR_9xWwgQVuMbjp@Xj?2g=JjaO!2EjrSD$J+LxD@)s zZ#;-w4kRsT1dUeUDabjL(@Nk+#Bjv5VXwTb<6Vv~gC%DKdx}ZYIX|fv2~@p^aj8#p zQ5jI?kQ11dDz>&9rJES|fRi|=49lUtK=CkE8mEX?Gh%y!J5s<`Nm=M-c*Was^b5#f zLgSRz5uU|u3tW%no(HND#TQxaz^NI;$w^r1Ucxz?`G89(3vluLuHjY%Ax!sI9xgw| zEeTrJYz3W2N(`KwNS`t=U@S~b?MaY-oP1!kmXTSTHH z-*zvDW?*wt2-E6zf>v8n7FJ^AX--xFL74oSNJ!hLDBqv6M?eR(1K}oX;>7R<{+tqg zaPg|{+m^B8IT-_4&DF=Su_tlr1K*UdgWvSW)Hi{p$(=}s+U)ZE?K!vxCNb>_NTk06 z1pbfIK0%l2{YdKkpo|8;`Wen8!)JFQp}ob;m)3*s!Ko*jv$VuVN=r?S<7{qsAR;LR zBh@tcl~;0l1m?^(K)Bkg+y}zFCXAJl+;v(quH_s%l+@^EkD`W5W0>-mkMlS@2Z%bJ zZG~+Ev3|;(BfuHqoOJnKdY+2OGE&F4apo6=1v_W(T0Y{`4K}yBtjm8%sTxF;ouQxv z&DPnr;0n$yfF!HDvs8;(l6*9G17LbpmZWaQ%fFyL3?lAn>DV!N<0$77bMvWqjBRf(3gxf$qGU2?DYpD3wh>=w=!B3jv3jbYxF5~P(3sV2XfK{t`c#g6A*GB z7A%!&n~;VHw|(XW?oPoN_`CS-O?o|pwxRhCaTn}&z(mjGDV)ARHL6{DbR=g|z&1%rRV;UHR(yb= z8C>oN1W*?XX(x{B9LL$+KQ9Q$g3wt#Bl!a7V<0rkgi&Z6Rdg6EGf?0QT)+Xxm&UX9 zJv_nP0~}x4=WB&g=W_-MD%KU3hz*h+-s&B0Q4q7bl&9gXzR#T#IELJ;q$bZku8|emZs^ch5Ng?LbMX4om@_i%2 zLJdh~okoreIROEk&qAoY45c<`Ny8m#?0KA+fJS7%Yw4z&;zCbxhyoT89#XUZRv+Ph z-01^anvSF)%g0gg#TgIK0V$z_tjmlPA{uFkojLCZYF~J*5@9=#`&EW8R3B6{1mr0K!{FVm7y%RaBLK;Cm*Q?U+A6#XO_nOobmyKq*xMv|H7@@ zw}R)+Z2V@1iT_&)Jb9Mc+=$T|)H0}Fx&x&accVGH!WTFo0dTcr)m)#;9r9lk0HPkX z`BubhIZFa}nAJ153B#Q^g2a=m*aFY&pHOG-xxy_r$7PmL%K(I%l|VuG44K$qPCa?G z3LK4jI>q5Or-kMmUti#FEojdL^KnfSYJ6gGcPPdBs)c#Ii6xTh)V98S=I+P^PQQs9I5}Tpz?zhp}ElrKBIR zq#^AuO_d)}1EIzy;n(xMP#T!ipREU0ELumZy8bTz&jeh#*+%_`6L4tQ*8T5P12G^@ z4FXD_|682n0S%M>6g5i5ZdCk?^VeX&li@a=j-D^7F1lzkLgXZqh9n*-dK8xp%@oh> z-0nbP>S1WiYP!41f)LW@5fT{~U`nLaWL8TGNbEX}#8ya=S9A|wwd!YMWis>&B||>l zHcUi^(rs8KsROVX-5a?J2Te$!s0?ITW~DAJ=j=47$F!8Shce7)rWULW#M7ejI)Pga zFjNv~R|2zpIba3=B_%w{81XZ>*adX2DTUCgv_nnKFlro+=dJ>Ji!{DdjFEvEoy6l+ z9I$|tlJenos~r7k*IX6l--T&_I75IPBx%;O&|U0nmu0U_yEu_$oN{F?T@;5;7fynPGFo@Qg84ahlx=Bn_o%#|a{h&?uN6=#&-GIdXe zvT%A74xZS6vfz-Tb!pxPSv;Y}Nk{!6uh07EgeArN! z?lNvM*jTv=J;bRHoWI|zpyYnW={h()-7@K8uU_O73W{)h!%lBm%i#OYSTWpQ85L505PQ9rL z7ZrTIy-XG(y*d3@u3U4(Dyb9A>=-o_P99&NqTW^<>I**e{uqx*sRR zV14qTPBN#^tS|YTbCRf9N!6rNboD5wq=4nb-HHp5SrvGPn^3j~t}r#xZtd1loT$R7 zW5F32C<4JwwXj3ELzPZF8*FhY)>tmSRBZFc0H4F z!J>84z|=;lrlL+Rk*+nt^gTt8|9$iOQi?DCWs`m=sXQ6|sV9FCKj}sKS-u) zu7`gmowzv_)Z?hHmx7-+R`K&TN`D^w!~CbcJFb4*PlYcvS$p6|C(Ag`pZl2Dv2n15 z;)-w>>^RGjCL>vFV*Ec+Mgd|AHS5+Ign2!uZ%|dQCd`;M@Vjv~04(q9FqXb3A1r#9 zgGDYFwYzgp<~|HeW=C=@jhc>jmKyzSJGi*kM-9SKs(wtu0N45+%~@YqN`YfF`BEoU zQRz?QmIC`$)IetK)V9sMsLGHOgcLyKyko$~Ltn(*B6x)?!uK;bJ97I1Q<<%2w?JRV z!7E%Tse;xU!}C9dGvA;&ZZXxf?ixPHT2iEbrOOvLaRny?fMw0$GoHDMk8>vkGLVH! z+Zx%~dpP6+Rw2XdGJ$(&4rn~tjU{~N1hLCtIfwcFc=1OxkeqsC!-wFs(7bj;XO{J!Stn>KhJwEH@Pmt_rZ__5k{duC~t4w zfs1Y7DpbI&avv5MaHFd_KBEkV%Ui4GqcOT>I4eU*5nZ&L-FJT?VIY_vO%+W60)F39`;1&YgERD+6e8;cd%k&*O=#?m^ zN(g9vQ_qGH(i{ESKHO0O(a??h9htJ79G4AEcjk1;P*dH$R>9hF!T}eMAQWe0(4*W! zus5Iu{ArqtM%L2QFWJ>a_pYT+^2M}{i}=nRSG7+9^;7c^C57Ud-hLp5XrK!|ZndQf zuX^z4tsKSyk2)vp)j$P{mg%~l6Dq)OIW9~GI-oWl#d$do?%meFy?1c722g>jF(_#& ze~A-vD9unLx6PwH!X1>O#?lzjH>med*FsfddGKfPqz*S~!C-R1Vm*dbjY=K=N%p() z8jtie%ae_g5*qfWr3_dKHuFDJzg{rxO|ILJ2Z&_URxA(g`1dRYblwWOtqrem4tG=V zBT62(8IMDk*bVn&5|Hj^8ta~FUIrf1c-!)14JO-q55e?y1MW{;iu zrp#6kS+$=ubLP4d&!YKe(>mi?tw+b)$+DxqY_?uH%2wCfj*SuXXYFCPzkT@ZuUGr< znety?wbHu(k__rQoJj@$lTW|2ME2=&sGUh;?2t3$bBmuTvM`pDW7Pktv+*Yp)b?~ z;O!}ybQ0|^akd)VNFGg_*`5zLHv+eiEwqKvrxsESG0eTm;E6oUTv_CQH7CW8_{kI7 zIWn^c9K6GUJaFjQ^L*}O=(lh;0c#a63fNKqJ)BB_2TmKDB?L0xJNSl!8K4yTsin0P z_L;rGof+g`)!Q7_NZDh!%Y?%k%*k6TijG?@lM)QZ|0+(gAYz1rcNA(n?ixX%(l^EJ ziBwl{<_JpX(IJ!+ExyHh1u!DTyoHRubt@}B;)Dd4w4{^(t?wS3t^Cs>rz$^lt2kMLZ`IF=x21FxkL>9+cH&!Yf$JPR@;V7ctfofdI%ki(PCE74N>^UR8D${V z)0#0|J|bL`=@j4R%z%N_g^Cf*!cWq_$!!mkRp~&Yvi$BloXmnjme)FihS7NVA?JTU zI@3+5(q?m}`pw+;;dY!cZ4Yn~4%_Lq1}Z=3zU_4j_hsM?(!wMgX6?X184xSUfl4J? z$qeZuxm$xz%&@PTm%SA#&K)B&a~T?6x~Vbm;T=u`5&ub-Xid~dnoPVw(U~0Y4CYuq!AoIJ&WE8yid%&_{UcjAl-d{!`2chv;pnVdaDzhm(TobWXj`eO%xL zU)GaRVTKR>2kOf}i2Cy0rZ_00!0mJQ#tP!Js7M4M`sHw0SdUiV8K24>4eGuc^H5PV zaxZ6jLH9GWw6$U0&f<0khBvX4y1~yK{(A|xEkI9tAv>dXA7|NMnOy1c*gxQO7i2q| zC1{6`*Kpqj3HGA?Q^1O^arXnx>Kak05>K_3)KN=?i046#PdR&lI;ftqEScH&828m4 zA=})j#QdKqMTFbTWYx(0{)k$|vzcu-L!r2flXxIJQu@VH8}$(fTLAy$P|9qT{(3FK zPL=sxO&S*@JllXu@?yRi%;2;dj(fB`^h2kdL4yqgnAfaJnLG}VLa>iHwd zR}1nqTEXAvf<0JJzjF)k`A!E$d-GA8s{!j=P&s-$rSnS2!JJ$mOqZa+e8B49~Pq^y^kCdicR5gX$ z>wgnxW0y^HA#_5pNJ92A+ z(eRZcUs@%41ex}2mwtU0gQcL_6p>Q-boWC?rhJpCU(}h$IlKhsTB`I0iu;msprKJh z{_2Q#RzAdSL221GKIy8)*FjmiJFRZ?*4ub*_l+@HZ&zU? zkBm=3#G;98XZ0!PcNT3Z-OG9`O4gI8niv;tD6mcW$XfQhQc?f2ML)=XR~j5;Zf{Mu zGs<`TT#E3e@++(bG9}RbC*M!{^3{{;<{$hB{s5PodgO$^EvR2hk4FYrwnqTk9W5j=vsFL0kqHfD|#wT&k7-Yh!D|5JEE>eUWP@#@HC+MM(Lnbw8v(^sgO;Yzr z?k2&k>&Vp@HRL3rPvsmv&|Cwt4dT#ZBSo+mw+z6mEO#Y!TVlw>k_mHSVAM0X5W_TK zT`_;NGA7#S6+WK3NZ4Fn#FW-+ImH{taIp*AMM5A{mZ;s&VH^O0Y0A~jMP1J+7kqNg zMb|(`*`5m z^7~FZO0DP7&f;zx`lV&S147U9xYRCONBV?Uc?0gF9Bu^j30$Hh&!=$a6P$Y9>^Ud) zz!~uQ6!*bkJ2N-9rIG2`nX`HDik!B2Kw=o?5AWnHjI zC=O;m7g|<1v+yWR)u6~upJqCH$~Z~Kk(|ICCxFu2AUM)^E_a|Hjd^oGowtYZ=%qHBP*~b z@`b!<8o=OWPJzJ|7f0`Xg!~xp?BT>xA1>waL92mc@fr7xaAHEF4QA)#fkcKw_5KyE zwm*k5fPGeTN>!m5u5u|S5THf{DQchn=T#EnVfm2ZB=U3cCD|U9f;g?kFMIGS?=}#2V6m{;yEF$I6Yw^ zNl?|4)EoQya&1)z`;y_t@rSN$Qrk_V3;SWTI{Q(^jhw)PKqRG4Qbm`8dON89WMm`Q z37f5k^kkqB{G7wKu(M*8N!hf=^GCeNahM^jSiy0$jw=6COl+Kl35shzvGH$8CpN#W^?#)P+n*^gteHZ%ND^_YmolZliQ`S8a_7pk5AFkQR&8|>P@lMa?t^v=I8UH`|) z`Wt8x2!Dt*a?(4sNuJiBdJa}QrW2BWlU1{$zPW+iavU;n$35pMo36zAUBZ*C35l-UseL~I=$-=Hs zQsX6gA2j(bsdSo}9E2-WN;{tXUNf9l3C1jIqvT|4jOozNQd>@2zS}l$r?7l!FEh_% zC&9jxG?GFafU)yf-0c*6hf`{>4?3#M!VAO*uX4B;f)sHxGOEIC{ydU12oP>%T`q11 z?Z;XoQ}+E*jrKp{Dx~e3!6|_POwus z>t+uIJ<`2A-%=o7sFDKj)k8tf3wSqi@&y}IhIA;cqAlUN3{v+kPK$s}O7grVNB0qT zbO5QP-c`ydWxl6=zr}mUA9HsM0+WsmS5%3ejlHJI;1`z*i)Bv8^KkHI-1S2C&SjWN zCRrTHog`dL+7P2#x@Byn`F_xyoXCK~)bw;OlxhfrFuaX}ZU6$Yw*}3>7bCBfQliex z{hdc%NsnRl%w1WjS<=qO?R-Vu82~u*}B$fJ;~)%JwuV#^d9B9LoYnAP`fZK6um`v=ga|5< zkS7|(o~Kw}=j;XSNs7ZeYD~HLXz!JraR6b^+U!5`^SCp&WnN`-T4u0$c~yYu0n>CV zLK)}zvv0c>W#K5(U&fF=(fLFS2H+Bl;1wc*g;T|E|92N4!pz02#S21<3P}1ZgDkF75F6g+)^p%(L{Pm#LJEgwczo*MgxBV*v+(w;sWtDHKrbxVPPuhDg1&JV+`k}6y&44N^d>FSXeYKHZp z%x$t;MqcEc0OU7R3Q-E+^Wu!US$uaeckr-a9zXWIm6Derv)Hzx|mQ$>&|6<$t?z(%Dt??;`|xqWr2b5K63Es$dE574R!0V zud9N5-f-G#OF(1s5=TZrCuUMUjBA|BSyzDTxmk_X{oz_?j;w+Cr5T83^HDD?;TNr0 zPPcPz5eQE`dD8+#zeDW>__Exzi?#C4OnHK{2H;}zW7^axhJK9;wLD6)xv|dwL46}A z?sPkpS!ya;9;n1A%E11daRRs<%WF05QfGZAXN|#h7Wovn^J6DYLg7=B*9N^=xu-e9 z30^EQc#;_wD_p`=zQOGfzE``7v~i@QNss&v%T0o<-Yhv2BfSRR0p89Vko&Ih>j z0t1_-H|(_OMVz<;(&|O34_8W#vcc_W8(*mkunXsp=a#&h>f(r7IAQge{%yCxEj`A$ z5ZF>O48}w5zr!7tXG@zIHDf;?)f?&dFTcHdf!h;U2w+*H3Cw)Y{%iNpeN4+H#Z2mC z2vNAA7sW~_qM^>w4y9ip8M$Pa%f2?Uw@asmcbhuzzs&H(?{NqS#5Vy_CCRGKxaB+- zysc67@dzh#a4D*FI34Bfl<>X4S&+Z5F9pU2!F@Q(-^1Mqq~kNQDMbQOA|_J+#6!sZ zOR1bk#oL<;DU2@1R(Cq;HxIJTI zBCmEd#$niHiq6Chx43hOdP7(6S4W0yL|uC%M|s_-cUVVd8K_g3iNyD6%0QKJsQiLd zL;}g+ZIRuLGmAh=nlF7irt1~XGGb`oZL}1LB}{C;WuV8STy0(rV~1mLOLF#4aX1;k zM@n3~1m!oJ@%w4v1%$+szC9Td8TD%enWJBeMYoceHtaZ%@_5c%0|Zw&$jD41e9EB_ zaG;6PQ{sY_{uqvpg>y@zI@d}c;@)eemHrJdPL6G`>bxsd-?TZ-{2{x%x@6c8q5ezK zp*+dCkBzwoHM4_RsreE$f~XeCn4w-TY>qiLhq0|2d&v^HQe?jrthRE zyll46Z&b&FveRH-b!BCe-;$e@nk%y`5U&@z zT3lFXB6B;rM4pmqt6X?(Fy9NMQL8%?o2VS?clf@G{rqut<`(iVDgaDN*wQG$dJ^sf z?xMgG3e*mzp<6weD*Yg6e6Q!+G#K%oyka6NStCF$<2)7^acK$`IN^D*>Mo9tfq)94 zTw&+TF8J$RS68@%f~A0{(J9iy^ZJMrZwM%$))W`Ig^Nt!z=}3%tMKOawbYl93J|`t zvIw`nrutcAkcZ-==4A|YJPUOEvN1DTSXhFf0$J5=wDaW?2J|00RwWW5-TIjzK+Ad zAT(L{u2@eaD|H)}Z3CiVHW~q8Ug@e`VZ#fxgVN`e^Pe7eXQX=0pWHpxO(*!28LXAQ zWXZ=4jHv^AaV7?Kr+w!@y@grcldwN`q+pk`!F_H7@CCO+SgUv@tY%GMz0f^1-(3Jw z5QcW39v70CN-8W>Q3cwrmtE%2w;)`D@@Z}#&kbAz0h$fQRMs>3!Phv83ZI$0EK!=g zdW1VS$d;l{ut0M^FCSXymbsx)1!s5L|KGtQEL zC04Ot*#mvAaKV6)dsbu7-Ql7SaGwe0G7~UQlHwrl7U0aZS|alNNq1rXGTDV(aF*y+8DuSR83;> z#%}WF05uP0%;qR6m=os_i0U{7?!GRnQ~q+$#~jFljAUMnuG6~-qH$Z3?x_ljivR?q zA)k_}Oq*4k^L@&-fZ}LpHyFx-vy4uxq`bXR67ioU(y0 zNE5va?w?*=4{K8Ms^zM>$J7Da4vEUMwaQKmkV8vYc2~8$Ws*e8(D5)RbExpTjWI!R&_&K^k9yvb4nhFI*V-Do;q&dv^{UJm;EwR zNtuVQ;zBw~hN8O7P)ESyZh6~AI8RW&s$^HD{kGUbzegoCi>lZHA#gGh-&-5EH|Ljt z?~smzUL^X5zT{obo`UCf(i6DcXPglQ`@J15vv z+RX3W(;M8LU^O91C7~Wo*CY!mQ~Qia?NUzc!JlRsG?fE4g6+FFkq4eSCF31B;S|m@ z!?Eiy$?Dart=fI01;@ z71`P{Dw%F~!AL=k5iIL>R@hQP+1~lLzHv6yEGs~?q($2qj`a;^UBGZ=fww^c{Ywfl z0>I9Yy2bDrvqeAVZXL4DIR{r1PJ|tFKF@H@2jZ)=mN-ir;bO0FmIkQlq(REpi-YT4 zH?o=+O~8`ETNbP^1b-J!%^_K2_Hku4ZP+#ltyP@Mg`+HXDUSgS3@YRxZjWFe8!~>n z**7cB4{@zf5pNU>83;_CZj#!rpc6?=vXw_YjdSO)WS+`WQ~J9}^4|E?PdLg9s6-i* zjPminQ_2P)r5!FeG1wlQ|Aynvs^V}TE2w<{OO(C%IA2nBP6h?>2zO3kU4;AZ$m1OSd3Q>~iJYkdpp#F> zvWe;|IOT;XNEg97-Acct4jzsw&ii%j859R{(f|pQWCn$5+LkQGw5yHBZ~_lGTs@T` zA6#G`+8*2v;m|UWv8B-~{eM%31_U7#e(PotX?{w6%Nq1>tScZs#{qCkq^&QaX6N~C z;8Xx0K{J?7tVL5gXB(nkwN_WGwG`u{YQ4xAHc-??)D~CPtZ9X<)r~asneONMtS!Ll zo@kcoYyWfVF0i;oxYSx^7}ZE|(FyPT;ukn90C;6S)K8lmD>}sWp4_q!JSADmlF{cc zao`U`CY^6(i_CM}Wq|7wU=jA0hfQOu&DWfcL4lzr`zv4My_;JT!H>LTthzt2Kg9q) zPgO->g`)@8l}wa&d--;7S1NSYM=ryfBFz0@Ce-h{|3-CW{YEh0s+Dt2*p+Ejz}Fme znPIzg&}mn88URa3XJ5abNt4^H(gaJsUfPYQ1xMN`a$0`F~m3pm&hCQx%n0*xhC=fZ^DIrHGz))t0a zpP^g{ppBGF%s2!KuHVNQRKP>oqc&MaJhplkzu>$toSQE4FLQ8DaGnT0SO%^4TarhW z@KkEg?6S>0IjoFeQl5he#i7@nS3-{EJ{3%U5kVzGUL+SgFrt;6x%=>l$yUZ3roB1o z1vB3f8{ZuSPG7`p97=--T!>GEV^_MqrvOj{msn9px%Q)h@4C}Z6|R=RT=Q4^K(uru z;H~l5hr2((uxX+@uRg*ncwuCrhX>%T&gO%;vP-~nS$wi|Q-iU5Y2;5VII-EVEzc|C zC+@@935bF9;U`S59fR$}8Eg1P2=#GS?{LZk!L%5|BnKfc=^Am!$0HwCxLl3*K~4G_sP^SHi$R=z0S-U-$+fg&t2HSV zhHk+q!}Ps55qZ|sJL2E%493a(Kx$@B;z9rK0{G*M^Q>&wwMOhO81|}DG9Z4_Rsqy8 zoEd`DahB#NK|%*sU2hR=L1?M#2<)fbPvcC7$ANESOy9eSQ+L2U7Kzaw8o=T(ZeP&< z=Hy=z$YR^dGe$-%!lel~vme>Jwd(u{n6TCwvc^!LN^eW$`wvwR0uCg1k|qWI2`2{N z)}+BWXv*VMQ7x8O#E^m8xf~(vsvp$rQkXK^Y8nf@$hkF8Uo{sTjp<%4Yg!Nzg|-1c zotqVhEj6=t-P~TT+!QPMs13khYFe5QVXAyt@*3ldbXAs2OoJc$TlOQRekRAJHc*gB zI_)Cqf*GjiRIJ)Pr%Z1&Mt~+l%vnwL9J!QOaG4l~d8uGKOjg22y^KJvXwmi7AX@d3 zYtMdIR;6V2^U)l@0yW5r>Ft(=Ra}Y(Op0zd?ha>WO#HqZ2S|Z7z$eUVGgchED`%k~ z@9R8%aK3Azinz5fQD9CogprKhKy!Bs=Y8Rr(wno{mBYE4gQRUj30KqoM{%nH;7$); z2D=2UhNt=CVD9_@zU1X7>H7$g(IG#w=gNW&sZ+y?IGaN&aDKXcPL0))VE~ch_GCi4 zFZ*XBdNDWYs_|>m-;s;@9S{5noVclg$ zPU1H1Q$bXM?u;}Smml7nobZ7$%Jj@uj>FbqB^jJ0o0Cg6E_7ecto>QhFPXPjKqGBQ zq;ZFfSbT;Bt~E`dN|&3#c|6U1FYu2ErcaBMe8sAlaQXosUJ@qw7Qcd99Bh1Qy!;cq zpX0KMpmn}tGKV34h_m}f)rk~WnRbTLTnHwU@j2EzCHHc)1+suaTPm~soX?k>i-pz1 z2{mPugtw>v%8`Xnzsx6dGgP;bcgb714MOZZ7qzF|kxF;EHmV2-3eOGfg}m${?^$$= zn!Wcq@q#3=%p#XhYf84X>K*Jf#w#P!AG(IPyrJw#?rY)fizk}U)qKvm z8dxWbe77}H^bc`?FF0yDx8k!v7jYH{Oh#_k2Sds6mRR&BT!HghbZ}uwH0w_BdYDTo zfu~m25USdcMmw0tn|PF43e;WRKbZ;DY$D~Xt(V46=HvqaT?!#ej_e`sCZIm4>S0g( z?squ*4d0z~a{8UjQ`~ohJo_2w2RMZVYm(Q-mez+nF*1-yUg(fQ1+(|?2F}lbS(0pF zC#b19F{5Ps0M3Gg_~w;dGCs;+h_;~;-43>~tN;qe7u;6@Wt`^D%eswTtX zuk$J}SkwFm3P1HN=O?UM5jmjtGH2Svot)DH<<6tsym;0wb$f&hLEzZyfwU0z0-4lo z&8)nZlT(8Xu|^wnz66kaGivu_WWIkx+i@@mG%=+^$~5sK?h9c-80;sny9+(iHY9bg zH8A^OxH7Eu&Ekg>U5PK0$Hz|F9IIVE=4o4=Tr=X-W^1=|dzQ`i(#qRr-GGGIiStyt)e`C3$63kHowJvjI(1%XJyGJX+c`3>Z zTCssBcjqt+ER>9?4D83#F5t8a!ec4vk|FzYis(*Gc0X)1z`$G80?XXqM8s+i|!F+_@TXu3qjGubEAtwF)io;5;Z|J9!_dyzu`Hj(!1; zJkydnEizL^Cb=!sJ4IDG&s8O#jR2#TP;+vQQpGO3xX~$f4R?UBS`rWYSG$@!IxyvF zjjGeY`xS>f!0xD^T877%kL+B?NgUY0l7`7172|+R6ndc3XjcE_3EaLwCS-Q4lzo=a zaR+dx^{0hv(v%R@U~(EKzTjz#*-aJ;em%Do^E?J9AazLt(NxY`5&(ShSO2F1jQXlkT|1q zFMT7e@d_9DfS*YF&a0E0J9BaZOpYD{Ar;!@!2X9_wJ1dxBZ!hQYEx3YWLZw^f`zWUX80V>~ zH6cf(pjn1>PxpuNO5#+1*d54Ns9LLe>>3@N?kw=}%O`PafJX-t_XeRcpZ58xy?NM@ z3D7RHvT4BtI7jTa`32(8X_>=XQOjlzEnYD4DCNUf{jP76@-0u9Zs zo$TRPBW^#ElU*=vN#kNRvO++i{T%B_oCOCoC=ZD%fT@gICv2-+ki4U06wn>cX$9O` zJrbJV(^qsV_rZ{@OiOuC3y!Ihw8Er;*lO^e%oI>K8W%f^(*a~1=Vff5mHK>`!!ls4 z>l%F9vx(2;&Idj%@5~l6yF4_c>n1K~fu=v1Tvig9@9(-2pFf9eyGB@9t4_7QJBjmm z!1@K<7Wn-mrJqpGVovj$jlRupVrFp-fZ zf4S<^QYR&b8$=}6FE^CGmHR?iOiHoBo?qUM=WHyF(HQpz>ZcUox?c03~0J++}LXz^#HPv$M)@E$57pCIA4a-ZN!yHotJdE3|b;w zB~IuF4j980(<%mc=J_$)7C}0aJd;CV{I8To0%2q0u$m?!EWC3d=hEO>^JKd9;>=Cl zwSqd$g({aGNj(%=o^!Z$povaO0*$ml$)(=K-2`kfGmYkpCtFh&fft&@Cw6(^_M9OD zAUys~;M-!rr4fje_~X&7tHa^~o}7Hcqq#!`qMN_Sh-*@&ua6EF+KJm5@HNnC?KA4Pa*Bl4FpQ;}P70A4 zHJPV?oBNm(HL!B|mAW*`J=~q*V#UTfRxaEBVj+w1OJ;j%K^ZquNpwRwdr;k z&*BX}yp}Z0;_rpi(=yOBo?0-mSmyq;)%>#l*rIhL7us!v`U%n{@;HGsKK4{&#@{!W zBpn)?%nnt{#>8YcK<{rR7POjwG`Ua}Dz20Kp>RHuf>K$(prQWpcomQ18=LQtNEJ!K zN$>C(HCn^T=auFpt?Egc_z?EzBrNVH^I7rWpXTHpg4pZhU)n7BCq3ICwy!^kgbf+d4l8m;A02FdYHbn z?octiauyeyQ%;(AMeQLj`U9+x)_?gt=UbfTggk(xn*_+HszvqSjIK1Zs)bJF)`Z*5 zz_VLk@+t?MVWyeR$ELH7afGEa)9jj&oqX2$=@h&k!fC&=%YG!SA=OOkW!x@77SjrE z)lnu-&M!0QvR62&(t}2}F-Ec8!YMHH3hHaorFqrgdj|KtP(7iGa)SoigtxiR1kxaT zq$_0uE1pw$j+01egVoe3jBnIhZ857yaLg)}Xb2S%TkmII%V{16OHP*erI_E^)Bc

V#fvt9aez8{ZG8Qc2p0Ik|w*qWIg)H+d9 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 literal 0 HcmV?d00001 diff --git a/legacyver/data/required_item_list_776.json b/legacyver/data/required_item_list_776.json new file mode 100644 index 0000000..687e532 --- /dev/null +++ b/legacyver/data/required_item_list_776.json @@ -0,0 +1,8947 @@ +{ + "minecraft:acacia_boat": { + "runtime_id": 405, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_button": { + "runtime_id": -140, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_chest_boat": { + "runtime_id": 680, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_door": { + "runtime_id": 589, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_double_slab": { + "runtime_id": -812, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_fence": { + "runtime_id": -575, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_fence_gate": { + "runtime_id": 187, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_hanging_sign": { + "runtime_id": -504, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_leaves": { + "runtime_id": 161, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_log": { + "runtime_id": 162, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_planks": { + "runtime_id": -742, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_pressure_plate": { + "runtime_id": -150, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_sapling": { + "runtime_id": -828, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_sign": { + "runtime_id": 612, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_slab": { + "runtime_id": -807, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_stairs": { + "runtime_id": 163, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_standing_sign": { + "runtime_id": -190, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_trapdoor": { + "runtime_id": -145, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_wall_sign": { + "runtime_id": -191, + "component_based": false, + "version": 2 + }, + "minecraft:acacia_wood": { + "runtime_id": -817, + "component_based": false, + "version": 2 + }, + "minecraft:activator_rail": { + "runtime_id": 126, + "component_based": false, + "version": 2 + }, + "minecraft:agent_spawn_egg": { + "runtime_id": 515, + "component_based": false, + "version": 2 + }, + "minecraft:air": { + "runtime_id": -158, + "component_based": false, + "version": 2 + }, + "minecraft:allay_spawn_egg": { + "runtime_id": 669, + "component_based": false, + "version": 2 + }, + "minecraft:allium": { + "runtime_id": -831, + "component_based": false, + "version": 2 + }, + "minecraft:allow": { + "runtime_id": 210, + "component_based": false, + "version": 2 + }, + "minecraft:amethyst_block": { + "runtime_id": -327, + "component_based": false, + "version": 2 + }, + "minecraft:amethyst_cluster": { + "runtime_id": -329, + "component_based": false, + "version": 2 + }, + "minecraft:amethyst_shard": { + "runtime_id": 662, + "component_based": false, + "version": 2 + }, + "minecraft:ancient_debris": { + "runtime_id": -271, + "component_based": false, + "version": 2 + }, + "minecraft:andesite": { + "runtime_id": -594, + "component_based": false, + "version": 2 + }, + "minecraft:andesite_double_slab": { + "runtime_id": -920, + "component_based": false, + "version": 2 + }, + "minecraft:andesite_slab": { + "runtime_id": -893, + "component_based": false, + "version": 2 + }, + "minecraft:andesite_stairs": { + "runtime_id": -171, + "component_based": false, + "version": 2 + }, + "minecraft:andesite_wall": { + "runtime_id": -974, + "component_based": false, + "version": 2 + }, + "minecraft:angler_pottery_sherd": { + "runtime_id": 694, + "component_based": false, + "version": 2 + }, + "minecraft:anvil": { + "runtime_id": 145, + "component_based": false, + "version": 2 + }, + "minecraft:apple": { + "runtime_id": 278, + "component_based": true, + "version": 1 + }, + "minecraft:archer_pottery_sherd": { + "runtime_id": 695, + "component_based": false, + "version": 2 + }, + "minecraft:armadillo_scute": { + "runtime_id": 741, + "component_based": false, + "version": 2 + }, + "minecraft:armadillo_spawn_egg": { + "runtime_id": 740, + "component_based": false, + "version": 2 + }, + "minecraft:armor_stand": { + "runtime_id": 585, + "component_based": false, + "version": 2 + }, + "minecraft:arms_up_pottery_sherd": { + "runtime_id": 696, + "component_based": false, + "version": 2 + }, + "minecraft:arrow": { + "runtime_id": 325, + "component_based": true, + "version": 2 + }, + "minecraft:axolotl_bucket": { + "runtime_id": 394, + "component_based": false, + "version": 2 + }, + "minecraft:axolotl_spawn_egg": { + "runtime_id": 530, + "component_based": false, + "version": 2 + }, + "minecraft:azalea": { + "runtime_id": -337, + "component_based": false, + "version": 2 + }, + "minecraft:azalea_leaves": { + "runtime_id": -324, + "component_based": false, + "version": 2 + }, + "minecraft:azalea_leaves_flowered": { + "runtime_id": -325, + "component_based": false, + "version": 2 + }, + "minecraft:azure_bluet": { + "runtime_id": -832, + "component_based": false, + "version": 2 + }, + "minecraft:baked_potato": { + "runtime_id": 303, + "component_based": false, + "version": 0 + }, + "minecraft:balloon": { + "runtime_id": 636, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo": { + "runtime_id": -163, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_block": { + "runtime_id": -527, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_button": { + "runtime_id": -511, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_chest_raft": { + "runtime_id": 692, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_door": { + "runtime_id": -517, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_double_slab": { + "runtime_id": -521, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_fence": { + "runtime_id": -515, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_fence_gate": { + "runtime_id": -516, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_hanging_sign": { + "runtime_id": -522, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_mosaic": { + "runtime_id": -509, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_mosaic_double_slab": { + "runtime_id": -525, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_mosaic_slab": { + "runtime_id": -524, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_mosaic_stairs": { + "runtime_id": -523, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_planks": { + "runtime_id": -510, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_pressure_plate": { + "runtime_id": -514, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_raft": { + "runtime_id": 691, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_sapling": { + "runtime_id": -164, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_sign": { + "runtime_id": 690, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_slab": { + "runtime_id": -513, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_stairs": { + "runtime_id": -512, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_standing_sign": { + "runtime_id": -518, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_trapdoor": { + "runtime_id": -520, + "component_based": false, + "version": 2 + }, + "minecraft:bamboo_wall_sign": { + "runtime_id": -519, + "component_based": false, + "version": 2 + }, + "minecraft:banner": { + "runtime_id": 600, + "component_based": false, + "version": 2 + }, + "minecraft:banner_pattern": { + "runtime_id": 794, + "component_based": false, + "version": 2 + }, + "minecraft:barrel": { + "runtime_id": -203, + "component_based": false, + "version": 2 + }, + "minecraft:barrier": { + "runtime_id": -161, + "component_based": false, + "version": 2 + }, + "minecraft:basalt": { + "runtime_id": -234, + "component_based": false, + "version": 2 + }, + "minecraft:bat_spawn_egg": { + "runtime_id": 480, + "component_based": false, + "version": 2 + }, + "minecraft:beacon": { + "runtime_id": 138, + "component_based": false, + "version": 2 + }, + "minecraft:bed": { + "runtime_id": 444, + "component_based": false, + "version": 2 + }, + "minecraft:bedrock": { + "runtime_id": 7, + "component_based": false, + "version": 2 + }, + "minecraft:bee_nest": { + "runtime_id": -218, + "component_based": false, + "version": 2 + }, + "minecraft:bee_spawn_egg": { + "runtime_id": 522, + "component_based": false, + "version": 2 + }, + "minecraft:beef": { + "runtime_id": 295, + "component_based": false, + "version": 0 + }, + "minecraft:beehive": { + "runtime_id": -219, + "component_based": false, + "version": 2 + }, + "minecraft:beetroot": { + "runtime_id": 307, + "component_based": false, + "version": 0 + }, + "minecraft:beetroot_seeds": { + "runtime_id": 317, + "component_based": false, + "version": 0 + }, + "minecraft:beetroot_soup": { + "runtime_id": 308, + "component_based": false, + "version": 0 + }, + "minecraft:bell": { + "runtime_id": -206, + "component_based": false, + "version": 2 + }, + "minecraft:big_dripleaf": { + "runtime_id": -323, + "component_based": false, + "version": 2 + }, + "minecraft:birch_boat": { + "runtime_id": 402, + "component_based": false, + "version": 2 + }, + "minecraft:birch_button": { + "runtime_id": -141, + "component_based": false, + "version": 2 + }, + "minecraft:birch_chest_boat": { + "runtime_id": 677, + "component_based": false, + "version": 2 + }, + "minecraft:birch_door": { + "runtime_id": 587, + "component_based": false, + "version": 2 + }, + "minecraft:birch_double_slab": { + "runtime_id": -810, + "component_based": false, + "version": 2 + }, + "minecraft:birch_fence": { + "runtime_id": -576, + "component_based": false, + "version": 2 + }, + "minecraft:birch_fence_gate": { + "runtime_id": 184, + "component_based": false, + "version": 2 + }, + "minecraft:birch_hanging_sign": { + "runtime_id": -502, + "component_based": false, + "version": 2 + }, + "minecraft:birch_leaves": { + "runtime_id": -801, + "component_based": false, + "version": 2 + }, + "minecraft:birch_log": { + "runtime_id": -570, + "component_based": false, + "version": 2 + }, + "minecraft:birch_planks": { + "runtime_id": -740, + "component_based": false, + "version": 2 + }, + "minecraft:birch_pressure_plate": { + "runtime_id": -151, + "component_based": false, + "version": 2 + }, + "minecraft:birch_sapling": { + "runtime_id": -826, + "component_based": false, + "version": 2 + }, + "minecraft:birch_sign": { + "runtime_id": 610, + "component_based": false, + "version": 2 + }, + "minecraft:birch_slab": { + "runtime_id": -805, + "component_based": false, + "version": 2 + }, + "minecraft:birch_stairs": { + "runtime_id": 135, + "component_based": false, + "version": 2 + }, + "minecraft:birch_standing_sign": { + "runtime_id": -186, + "component_based": false, + "version": 2 + }, + "minecraft:birch_trapdoor": { + "runtime_id": -146, + "component_based": false, + "version": 2 + }, + "minecraft:birch_wall_sign": { + "runtime_id": -187, + "component_based": false, + "version": 2 + }, + "minecraft:birch_wood": { + "runtime_id": -815, + "component_based": false, + "version": 2 + }, + "minecraft:black_bundle": { + "runtime_id": 264, + "component_based": true, + "version": 1 + }, + "minecraft:black_candle": { + "runtime_id": -428, + "component_based": false, + "version": 2 + }, + "minecraft:black_candle_cake": { + "runtime_id": -445, + "component_based": false, + "version": 2 + }, + "minecraft:black_carpet": { + "runtime_id": -611, + "component_based": false, + "version": 2 + }, + "minecraft:black_concrete": { + "runtime_id": -642, + "component_based": false, + "version": 2 + }, + "minecraft:black_concrete_powder": { + "runtime_id": -723, + "component_based": false, + "version": 2 + }, + "minecraft:black_dye": { + "runtime_id": 421, + "component_based": false, + "version": 2 + }, + "minecraft:black_glazed_terracotta": { + "runtime_id": 235, + "component_based": false, + "version": 2 + }, + "minecraft:black_shulker_box": { + "runtime_id": -627, + "component_based": false, + "version": 2 + }, + "minecraft:black_stained_glass": { + "runtime_id": -687, + "component_based": false, + "version": 2 + }, + "minecraft:black_stained_glass_pane": { + "runtime_id": -657, + "component_based": false, + "version": 2 + }, + "minecraft:black_terracotta": { + "runtime_id": -738, + "component_based": false, + "version": 2 + }, + "minecraft:black_wool": { + "runtime_id": -554, + "component_based": false, + "version": 2 + }, + "minecraft:blackstone": { + "runtime_id": -273, + "component_based": false, + "version": 2 + }, + "minecraft:blackstone_double_slab": { + "runtime_id": -283, + "component_based": false, + "version": 2 + }, + "minecraft:blackstone_slab": { + "runtime_id": -282, + "component_based": false, + "version": 2 + }, + "minecraft:blackstone_stairs": { + "runtime_id": -276, + "component_based": false, + "version": 2 + }, + "minecraft:blackstone_wall": { + "runtime_id": -277, + "component_based": false, + "version": 2 + }, + "minecraft:blade_pottery_sherd": { + "runtime_id": 697, + "component_based": false, + "version": 2 + }, + "minecraft:blast_furnace": { + "runtime_id": -196, + "component_based": false, + "version": 2 + }, + "minecraft:blaze_powder": { + "runtime_id": 456, + "component_based": false, + "version": 2 + }, + "minecraft:blaze_rod": { + "runtime_id": 449, + "component_based": false, + "version": 2 + }, + "minecraft:blaze_spawn_egg": { + "runtime_id": 483, + "component_based": false, + "version": 2 + }, + "minecraft:bleach": { + "runtime_id": 634, + "component_based": false, + "version": 2 + }, + "minecraft:blue_bundle": { + "runtime_id": 259, + "component_based": true, + "version": 1 + }, + "minecraft:blue_candle": { + "runtime_id": -424, + "component_based": false, + "version": 2 + }, + "minecraft:blue_candle_cake": { + "runtime_id": -441, + "component_based": false, + "version": 2 + }, + "minecraft:blue_carpet": { + "runtime_id": -607, + "component_based": false, + "version": 2 + }, + "minecraft:blue_concrete": { + "runtime_id": -638, + "component_based": false, + "version": 2 + }, + "minecraft:blue_concrete_powder": { + "runtime_id": -719, + "component_based": false, + "version": 2 + }, + "minecraft:blue_dye": { + "runtime_id": 425, + "component_based": false, + "version": 2 + }, + "minecraft:blue_glazed_terracotta": { + "runtime_id": 231, + "component_based": false, + "version": 2 + }, + "minecraft:blue_ice": { + "runtime_id": -11, + "component_based": false, + "version": 2 + }, + "minecraft:blue_orchid": { + "runtime_id": -830, + "component_based": false, + "version": 2 + }, + "minecraft:blue_shulker_box": { + "runtime_id": -623, + "component_based": false, + "version": 2 + }, + "minecraft:blue_stained_glass": { + "runtime_id": -683, + "component_based": false, + "version": 2 + }, + "minecraft:blue_stained_glass_pane": { + "runtime_id": -653, + "component_based": false, + "version": 2 + }, + "minecraft:blue_terracotta": { + "runtime_id": -734, + "component_based": false, + "version": 2 + }, + "minecraft:blue_wool": { + "runtime_id": -563, + "component_based": false, + "version": 2 + }, + "minecraft:board": { + "runtime_id": 630, + "component_based": false, + "version": 2 + }, + "minecraft:boat": { + "runtime_id": 792, + "component_based": false, + "version": 2 + }, + "minecraft:bogged_spawn_egg": { + "runtime_id": 490, + "component_based": false, + "version": 2 + }, + "minecraft:bolt_armor_trim_smithing_template": { + "runtime_id": 736, + "component_based": false, + "version": 2 + }, + "minecraft:bone": { + "runtime_id": 441, + "component_based": false, + "version": 2 + }, + "minecraft:bone_block": { + "runtime_id": 216, + "component_based": false, + "version": 2 + }, + "minecraft:bone_meal": { + "runtime_id": 437, + "component_based": false, + "version": 2 + }, + "minecraft:book": { + "runtime_id": 413, + "component_based": false, + "version": 2 + }, + "minecraft:bookshelf": { + "runtime_id": 47, + "component_based": false, + "version": 2 + }, + "minecraft:border_block": { + "runtime_id": 212, + "component_based": false, + "version": 2 + }, + "minecraft:bordure_indented_banner_pattern": { + "runtime_id": 619, + "component_based": false, + "version": 2 + }, + "minecraft:bow": { + "runtime_id": 324, + "component_based": false, + "version": 2 + }, + "minecraft:bowl": { + "runtime_id": 346, + "component_based": false, + "version": 2 + }, + "minecraft:brain_coral": { + "runtime_id": -581, + "component_based": false, + "version": 2 + }, + "minecraft:brain_coral_block": { + "runtime_id": -849, + "component_based": false, + "version": 2 + }, + "minecraft:brain_coral_fan": { + "runtime_id": -840, + "component_based": false, + "version": 2 + }, + "minecraft:brain_coral_wall_fan": { + "runtime_id": -904, + "component_based": false, + "version": 2 + }, + "minecraft:bread": { + "runtime_id": 283, + "component_based": false, + "version": 0 + }, + "minecraft:breeze_rod": { + "runtime_id": 274, + "component_based": true, + "version": 1 + }, + "minecraft:breeze_spawn_egg": { + "runtime_id": 529, + "component_based": false, + "version": 2 + }, + "minecraft:brewer_pottery_sherd": { + "runtime_id": 698, + "component_based": false, + "version": 2 + }, + "minecraft:brewing_stand": { + "runtime_id": 458, + "component_based": true, + "version": 2 + }, + "minecraft:brick": { + "runtime_id": 409, + "component_based": false, + "version": 2 + }, + "minecraft:brick_block": { + "runtime_id": 45, + "component_based": false, + "version": 2 + }, + "minecraft:brick_double_slab": { + "runtime_id": -880, + "component_based": false, + "version": 2 + }, + "minecraft:brick_slab": { + "runtime_id": -874, + "component_based": false, + "version": 2 + }, + "minecraft:brick_stairs": { + "runtime_id": 108, + "component_based": false, + "version": 2 + }, + "minecraft:brick_wall": { + "runtime_id": -976, + "component_based": false, + "version": 2 + }, + "minecraft:brown_bundle": { + "runtime_id": 258, + "component_based": true, + "version": 1 + }, + "minecraft:brown_candle": { + "runtime_id": -425, + "component_based": false, + "version": 2 + }, + "minecraft:brown_candle_cake": { + "runtime_id": -442, + "component_based": false, + "version": 2 + }, + "minecraft:brown_carpet": { + "runtime_id": -608, + "component_based": false, + "version": 2 + }, + "minecraft:brown_concrete": { + "runtime_id": -639, + "component_based": false, + "version": 2 + }, + "minecraft:brown_concrete_powder": { + "runtime_id": -720, + "component_based": false, + "version": 2 + }, + "minecraft:brown_dye": { + "runtime_id": 424, + "component_based": false, + "version": 2 + }, + "minecraft:brown_glazed_terracotta": { + "runtime_id": 232, + "component_based": false, + "version": 2 + }, + "minecraft:brown_mushroom": { + "runtime_id": 39, + "component_based": false, + "version": 2 + }, + "minecraft:brown_mushroom_block": { + "runtime_id": 99, + "component_based": false, + "version": 2 + }, + "minecraft:brown_shulker_box": { + "runtime_id": -624, + "component_based": false, + "version": 2 + }, + "minecraft:brown_stained_glass": { + "runtime_id": -684, + "component_based": false, + "version": 2 + }, + "minecraft:brown_stained_glass_pane": { + "runtime_id": -654, + "component_based": false, + "version": 2 + }, + "minecraft:brown_terracotta": { + "runtime_id": -735, + "component_based": false, + "version": 2 + }, + "minecraft:brown_wool": { + "runtime_id": -555, + "component_based": false, + "version": 2 + }, + "minecraft:brush": { + "runtime_id": 717, + "component_based": false, + "version": 2 + }, + "minecraft:bubble_column": { + "runtime_id": -160, + "component_based": false, + "version": 2 + }, + "minecraft:bubble_coral": { + "runtime_id": -582, + "component_based": false, + "version": 2 + }, + "minecraft:bubble_coral_block": { + "runtime_id": -850, + "component_based": false, + "version": 2 + }, + "minecraft:bubble_coral_fan": { + "runtime_id": -841, + "component_based": false, + "version": 2 + }, + "minecraft:bubble_coral_wall_fan": { + "runtime_id": -136, + "component_based": false, + "version": 2 + }, + "minecraft:bucket": { + "runtime_id": 385, + "component_based": false, + "version": 2 + }, + "minecraft:budding_amethyst": { + "runtime_id": -328, + "component_based": false, + "version": 2 + }, + "minecraft:bundle": { + "runtime_id": 271, + "component_based": true, + "version": 1 + }, + "minecraft:burn_pottery_sherd": { + "runtime_id": 699, + "component_based": false, + "version": 2 + }, + "minecraft:cactus": { + "runtime_id": 81, + "component_based": false, + "version": 2 + }, + "minecraft:cake": { + "runtime_id": 443, + "component_based": true, + "version": 2 + }, + "minecraft:calcite": { + "runtime_id": -326, + "component_based": false, + "version": 2 + }, + "minecraft:calibrated_sculk_sensor": { + "runtime_id": -580, + "component_based": false, + "version": 2 + }, + "minecraft:camel_spawn_egg": { + "runtime_id": 693, + "component_based": false, + "version": 2 + }, + "minecraft:camera": { + "runtime_id": 631, + "component_based": false, + "version": 0 + }, + "minecraft:campfire": { + "runtime_id": 624, + "component_based": true, + "version": 2 + }, + "minecraft:candle": { + "runtime_id": -412, + "component_based": false, + "version": 2 + }, + "minecraft:candle_cake": { + "runtime_id": -429, + "component_based": false, + "version": 2 + }, + "minecraft:carpet": { + "runtime_id": 751, + "component_based": false, + "version": 2 + }, + "minecraft:carrot": { + "runtime_id": 301, + "component_based": false, + "version": 0 + }, + "minecraft:carrot_on_a_stick": { + "runtime_id": 550, + "component_based": false, + "version": 2 + }, + "minecraft:carrots": { + "runtime_id": 141, + "component_based": false, + "version": 2 + }, + "minecraft:cartography_table": { + "runtime_id": -200, + "component_based": false, + "version": 2 + }, + "minecraft:carved_pumpkin": { + "runtime_id": -155, + "component_based": false, + "version": 2 + }, + "minecraft:cat_spawn_egg": { + "runtime_id": 516, + "component_based": false, + "version": 2 + }, + "minecraft:cauldron": { + "runtime_id": 459, + "component_based": true, + "version": 2 + }, + "minecraft:cave_spider_spawn_egg": { + "runtime_id": 484, + "component_based": false, + "version": 2 + }, + "minecraft:cave_vines": { + "runtime_id": -322, + "component_based": false, + "version": 2 + }, + "minecraft:cave_vines_body_with_berries": { + "runtime_id": -375, + "component_based": false, + "version": 2 + }, + "minecraft:cave_vines_head_with_berries": { + "runtime_id": -376, + "component_based": false, + "version": 2 + }, + "minecraft:chain": { + "runtime_id": 657, + "component_based": true, + "version": 2 + }, + "minecraft:chain_command_block": { + "runtime_id": 189, + "component_based": false, + "version": 2 + }, + "minecraft:chainmail_boots": { + "runtime_id": 367, + "component_based": false, + "version": 2 + }, + "minecraft:chainmail_chestplate": { + "runtime_id": 365, + "component_based": false, + "version": 2 + }, + "minecraft:chainmail_helmet": { + "runtime_id": 364, + "component_based": false, + "version": 2 + }, + "minecraft:chainmail_leggings": { + "runtime_id": 366, + "component_based": false, + "version": 2 + }, + "minecraft:chalkboard": { + "runtime_id": 230, + "component_based": false, + "version": 2 + }, + "minecraft:charcoal": { + "runtime_id": 327, + "component_based": true, + "version": 2 + }, + "minecraft:chemical_heat": { + "runtime_id": 192, + "component_based": false, + "version": 2 + }, + "minecraft:chemistry_table": { + "runtime_id": 786, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_boat": { + "runtime_id": 687, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_button": { + "runtime_id": -530, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_chest_boat": { + "runtime_id": 688, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_door": { + "runtime_id": -531, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_double_slab": { + "runtime_id": -540, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_fence": { + "runtime_id": -532, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_fence_gate": { + "runtime_id": -533, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_hanging_sign": { + "runtime_id": -534, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_leaves": { + "runtime_id": -548, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_log": { + "runtime_id": -536, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_planks": { + "runtime_id": -537, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_pressure_plate": { + "runtime_id": -538, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_sapling": { + "runtime_id": -547, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_sign": { + "runtime_id": 689, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_slab": { + "runtime_id": -539, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_stairs": { + "runtime_id": -541, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_standing_sign": { + "runtime_id": -542, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_trapdoor": { + "runtime_id": -543, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_wall_sign": { + "runtime_id": -544, + "component_based": false, + "version": 2 + }, + "minecraft:cherry_wood": { + "runtime_id": -546, + "component_based": false, + "version": 2 + }, + "minecraft:chest": { + "runtime_id": 54, + "component_based": false, + "version": 2 + }, + "minecraft:chest_boat": { + "runtime_id": 683, + "component_based": false, + "version": 2 + }, + "minecraft:chest_minecart": { + "runtime_id": 415, + "component_based": false, + "version": 2 + }, + "minecraft:chicken": { + "runtime_id": 297, + "component_based": false, + "version": 0 + }, + "minecraft:chicken_spawn_egg": { + "runtime_id": 462, + "component_based": false, + "version": 2 + }, + "minecraft:chipped_anvil": { + "runtime_id": -959, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_bookshelf": { + "runtime_id": -526, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_copper": { + "runtime_id": -760, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_deepslate": { + "runtime_id": -395, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_nether_bricks": { + "runtime_id": -302, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_polished_blackstone": { + "runtime_id": -279, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_quartz_block": { + "runtime_id": -953, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_red_sandstone": { + "runtime_id": -956, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_resin_bricks": { + "runtime_id": -1020, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_sandstone": { + "runtime_id": -944, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_stone_bricks": { + "runtime_id": -870, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_tuff": { + "runtime_id": -753, + "component_based": false, + "version": 2 + }, + "minecraft:chiseled_tuff_bricks": { + "runtime_id": -759, + "component_based": false, + "version": 2 + }, + "minecraft:chorus_flower": { + "runtime_id": 200, + "component_based": false, + "version": 2 + }, + "minecraft:chorus_fruit": { + "runtime_id": 591, + "component_based": false, + "version": 0 + }, + "minecraft:chorus_plant": { + "runtime_id": 240, + "component_based": false, + "version": 2 + }, + "minecraft:clay": { + "runtime_id": 82, + "component_based": false, + "version": 2 + }, + "minecraft:clay_ball": { + "runtime_id": 410, + "component_based": false, + "version": 2 + }, + "minecraft:client_request_placeholder_block": { + "runtime_id": -465, + "component_based": false, + "version": 2 + }, + "minecraft:clock": { + "runtime_id": 419, + "component_based": false, + "version": 2 + }, + "minecraft:closed_eyeblossom": { + "runtime_id": -1019, + "component_based": false, + "version": 2 + }, + "minecraft:coal": { + "runtime_id": 326, + "component_based": true, + "version": 2 + }, + "minecraft:coal_block": { + "runtime_id": 173, + "component_based": false, + "version": 2 + }, + "minecraft:coal_ore": { + "runtime_id": 16, + "component_based": false, + "version": 2 + }, + "minecraft:coarse_dirt": { + "runtime_id": -962, + "component_based": false, + "version": 2 + }, + "minecraft:coast_armor_trim_smithing_template": { + "runtime_id": 721, + "component_based": false, + "version": 2 + }, + "minecraft:cobbled_deepslate": { + "runtime_id": -379, + "component_based": false, + "version": 2 + }, + "minecraft:cobbled_deepslate_double_slab": { + "runtime_id": -396, + "component_based": false, + "version": 2 + }, + "minecraft:cobbled_deepslate_slab": { + "runtime_id": -380, + "component_based": false, + "version": 2 + }, + "minecraft:cobbled_deepslate_stairs": { + "runtime_id": -381, + "component_based": false, + "version": 2 + }, + "minecraft:cobbled_deepslate_wall": { + "runtime_id": -382, + "component_based": false, + "version": 2 + }, + "minecraft:cobblestone": { + "runtime_id": 4, + "component_based": false, + "version": 2 + }, + "minecraft:cobblestone_double_slab": { + "runtime_id": -879, + "component_based": false, + "version": 2 + }, + "minecraft:cobblestone_slab": { + "runtime_id": -873, + "component_based": false, + "version": 2 + }, + "minecraft:cobblestone_wall": { + "runtime_id": 139, + "component_based": false, + "version": 2 + }, + "minecraft:cocoa": { + "runtime_id": 127, + "component_based": false, + "version": 2 + }, + "minecraft:cocoa_beans": { + "runtime_id": 438, + "component_based": false, + "version": 2 + }, + "minecraft:cod": { + "runtime_id": 286, + "component_based": false, + "version": 0 + }, + "minecraft:cod_bucket": { + "runtime_id": 389, + "component_based": false, + "version": 2 + }, + "minecraft:cod_spawn_egg": { + "runtime_id": 508, + "component_based": false, + "version": 2 + }, + "minecraft:colored_torch_blue": { + "runtime_id": 204, + "component_based": false, + "version": 2 + }, + "minecraft:colored_torch_bp": { + "runtime_id": 790, + "component_based": false, + "version": 2 + }, + "minecraft:colored_torch_green": { + "runtime_id": -963, + "component_based": false, + "version": 2 + }, + "minecraft:colored_torch_purple": { + "runtime_id": -964, + "component_based": false, + "version": 2 + }, + "minecraft:colored_torch_red": { + "runtime_id": 202, + "component_based": false, + "version": 2 + }, + "minecraft:colored_torch_rg": { + "runtime_id": 789, + "component_based": false, + "version": 2 + }, + "minecraft:command_block": { + "runtime_id": 137, + "component_based": false, + "version": 2 + }, + "minecraft:command_block_minecart": { + "runtime_id": 596, + "component_based": false, + "version": 2 + }, + "minecraft:comparator": { + "runtime_id": 555, + "component_based": true, + "version": 2 + }, + "minecraft:compass": { + "runtime_id": 417, + "component_based": false, + "version": 2 + }, + "minecraft:composter": { + "runtime_id": -213, + "component_based": false, + "version": 2 + }, + "minecraft:compound": { + "runtime_id": 632, + "component_based": false, + "version": 2 + }, + "minecraft:compound_creator": { + "runtime_id": 238, + "component_based": false, + "version": 2 + }, + "minecraft:concrete": { + "runtime_id": 777, + "component_based": false, + "version": 2 + }, + "minecraft:concrete_powder": { + "runtime_id": 778, + "component_based": false, + "version": 2 + }, + "minecraft:conduit": { + "runtime_id": -157, + "component_based": false, + "version": 2 + }, + "minecraft:cooked_beef": { + "runtime_id": 296, + "component_based": false, + "version": 0 + }, + "minecraft:cooked_chicken": { + "runtime_id": 298, + "component_based": false, + "version": 0 + }, + "minecraft:cooked_cod": { + "runtime_id": 290, + "component_based": false, + "version": 0 + }, + "minecraft:cooked_mutton": { + "runtime_id": 584, + "component_based": false, + "version": 0 + }, + "minecraft:cooked_porkchop": { + "runtime_id": 285, + "component_based": false, + "version": 0 + }, + "minecraft:cooked_rabbit": { + "runtime_id": 311, + "component_based": false, + "version": 0 + }, + "minecraft:cooked_salmon": { + "runtime_id": 291, + "component_based": false, + "version": 0 + }, + "minecraft:cookie": { + "runtime_id": 293, + "component_based": false, + "version": 0 + }, + "minecraft:copper_block": { + "runtime_id": -340, + "component_based": false, + "version": 2 + }, + "minecraft:copper_bulb": { + "runtime_id": -776, + "component_based": false, + "version": 2 + }, + "minecraft:copper_door": { + "runtime_id": -784, + "component_based": false, + "version": 2 + }, + "minecraft:copper_grate": { + "runtime_id": -768, + "component_based": false, + "version": 2 + }, + "minecraft:copper_ingot": { + "runtime_id": 538, + "component_based": false, + "version": 2 + }, + "minecraft:copper_ore": { + "runtime_id": -311, + "component_based": false, + "version": 2 + }, + "minecraft:copper_trapdoor": { + "runtime_id": -792, + "component_based": false, + "version": 2 + }, + "minecraft:coral": { + "runtime_id": 773, + "component_based": false, + "version": 2 + }, + "minecraft:coral_block": { + "runtime_id": 755, + "component_based": false, + "version": 2 + }, + "minecraft:coral_fan": { + "runtime_id": 764, + "component_based": false, + "version": 2 + }, + "minecraft:coral_fan_dead": { + "runtime_id": 765, + "component_based": false, + "version": 2 + }, + "minecraft:cornflower": { + "runtime_id": -838, + "component_based": false, + "version": 2 + }, + "minecraft:cow_spawn_egg": { + "runtime_id": 463, + "component_based": false, + "version": 2 + }, + "minecraft:cracked_deepslate_bricks": { + "runtime_id": -410, + "component_based": false, + "version": 2 + }, + "minecraft:cracked_deepslate_tiles": { + "runtime_id": -409, + "component_based": false, + "version": 2 + }, + "minecraft:cracked_nether_bricks": { + "runtime_id": -303, + "component_based": false, + "version": 2 + }, + "minecraft:cracked_polished_blackstone_bricks": { + "runtime_id": -280, + "component_based": false, + "version": 2 + }, + "minecraft:cracked_stone_bricks": { + "runtime_id": -869, + "component_based": false, + "version": 2 + }, + "minecraft:crafter": { + "runtime_id": -313, + "component_based": false, + "version": 2 + }, + "minecraft:crafting_table": { + "runtime_id": 58, + "component_based": false, + "version": 2 + }, + "minecraft:creaking_heart": { + "runtime_id": -1012, + "component_based": false, + "version": 2 + }, + "minecraft:creaking_spawn_egg": { + "runtime_id": 748, + "component_based": false, + "version": 2 + }, + "minecraft:creeper_banner_pattern": { + "runtime_id": 615, + "component_based": false, + "version": 2 + }, + "minecraft:creeper_head": { + "runtime_id": -968, + "component_based": false, + "version": 2 + }, + "minecraft:creeper_spawn_egg": { + "runtime_id": 468, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_button": { + "runtime_id": -260, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_door": { + "runtime_id": 654, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_double_slab": { + "runtime_id": -266, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_fence": { + "runtime_id": -256, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_fence_gate": { + "runtime_id": -258, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_fungus": { + "runtime_id": -228, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_hanging_sign": { + "runtime_id": -506, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_hyphae": { + "runtime_id": -299, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_nylium": { + "runtime_id": -232, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_planks": { + "runtime_id": -242, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_pressure_plate": { + "runtime_id": -262, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_roots": { + "runtime_id": -223, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_sign": { + "runtime_id": 652, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_slab": { + "runtime_id": -264, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_stairs": { + "runtime_id": -254, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_standing_sign": { + "runtime_id": -250, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_stem": { + "runtime_id": -225, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_trapdoor": { + "runtime_id": -246, + "component_based": false, + "version": 2 + }, + "minecraft:crimson_wall_sign": { + "runtime_id": -252, + "component_based": false, + "version": 2 + }, + "minecraft:crossbow": { + "runtime_id": 608, + "component_based": false, + "version": 2 + }, + "minecraft:crying_obsidian": { + "runtime_id": -289, + "component_based": false, + "version": 2 + }, + "minecraft:cut_copper": { + "runtime_id": -347, + "component_based": false, + "version": 2 + }, + "minecraft:cut_copper_slab": { + "runtime_id": -361, + "component_based": false, + "version": 2 + }, + "minecraft:cut_copper_stairs": { + "runtime_id": -354, + "component_based": false, + "version": 2 + }, + "minecraft:cut_red_sandstone": { + "runtime_id": -957, + "component_based": false, + "version": 2 + }, + "minecraft:cut_red_sandstone_double_slab": { + "runtime_id": -928, + "component_based": false, + "version": 2 + }, + "minecraft:cut_red_sandstone_slab": { + "runtime_id": -901, + "component_based": false, + "version": 2 + }, + "minecraft:cut_sandstone": { + "runtime_id": -945, + "component_based": false, + "version": 2 + }, + "minecraft:cut_sandstone_double_slab": { + "runtime_id": -927, + "component_based": false, + "version": 2 + }, + "minecraft:cut_sandstone_slab": { + "runtime_id": -900, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_bundle": { + "runtime_id": 263, + "component_based": true, + "version": 1 + }, + "minecraft:cyan_candle": { + "runtime_id": -422, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_candle_cake": { + "runtime_id": -439, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_carpet": { + "runtime_id": -605, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_concrete": { + "runtime_id": -636, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_concrete_powder": { + "runtime_id": -717, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_dye": { + "runtime_id": 427, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_glazed_terracotta": { + "runtime_id": 229, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_shulker_box": { + "runtime_id": -621, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_stained_glass": { + "runtime_id": -681, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_stained_glass_pane": { + "runtime_id": -651, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_terracotta": { + "runtime_id": -732, + "component_based": false, + "version": 2 + }, + "minecraft:cyan_wool": { + "runtime_id": -561, + "component_based": false, + "version": 2 + }, + "minecraft:damaged_anvil": { + "runtime_id": -960, + "component_based": false, + "version": 2 + }, + "minecraft:dandelion": { + "runtime_id": 37, + "component_based": false, + "version": 2 + }, + "minecraft:danger_pottery_sherd": { + "runtime_id": 700, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_boat": { + "runtime_id": 406, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_button": { + "runtime_id": -142, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_chest_boat": { + "runtime_id": 681, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_door": { + "runtime_id": 590, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_double_slab": { + "runtime_id": -813, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_fence": { + "runtime_id": -577, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_fence_gate": { + "runtime_id": 186, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_hanging_sign": { + "runtime_id": -505, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_leaves": { + "runtime_id": -803, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_log": { + "runtime_id": -572, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_planks": { + "runtime_id": -743, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_pressure_plate": { + "runtime_id": -152, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_sapling": { + "runtime_id": -829, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_sign": { + "runtime_id": 613, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_slab": { + "runtime_id": -808, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_stairs": { + "runtime_id": 164, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_trapdoor": { + "runtime_id": -147, + "component_based": false, + "version": 2 + }, + "minecraft:dark_oak_wood": { + "runtime_id": -818, + "component_based": false, + "version": 2 + }, + "minecraft:dark_prismarine": { + "runtime_id": -947, + "component_based": false, + "version": 2 + }, + "minecraft:dark_prismarine_double_slab": { + "runtime_id": -913, + "component_based": false, + "version": 2 + }, + "minecraft:dark_prismarine_slab": { + "runtime_id": -886, + "component_based": false, + "version": 2 + }, + "minecraft:dark_prismarine_stairs": { + "runtime_id": -3, + "component_based": false, + "version": 2 + }, + "minecraft:darkoak_standing_sign": { + "runtime_id": -192, + "component_based": false, + "version": 2 + }, + "minecraft:darkoak_wall_sign": { + "runtime_id": -193, + "component_based": false, + "version": 2 + }, + "minecraft:daylight_detector": { + "runtime_id": 151, + "component_based": false, + "version": 2 + }, + "minecraft:daylight_detector_inverted": { + "runtime_id": 178, + "component_based": false, + "version": 2 + }, + "minecraft:dead_brain_coral": { + "runtime_id": -586, + "component_based": false, + "version": 2 + }, + "minecraft:dead_brain_coral_block": { + "runtime_id": -854, + "component_based": false, + "version": 2 + }, + "minecraft:dead_brain_coral_fan": { + "runtime_id": -844, + "component_based": false, + "version": 2 + }, + "minecraft:dead_brain_coral_wall_fan": { + "runtime_id": -906, + "component_based": false, + "version": 2 + }, + "minecraft:dead_bubble_coral": { + "runtime_id": -587, + "component_based": false, + "version": 2 + }, + "minecraft:dead_bubble_coral_block": { + "runtime_id": -855, + "component_based": false, + "version": 2 + }, + "minecraft:dead_bubble_coral_fan": { + "runtime_id": -845, + "component_based": false, + "version": 2 + }, + "minecraft:dead_bubble_coral_wall_fan": { + "runtime_id": -908, + "component_based": false, + "version": 2 + }, + "minecraft:dead_fire_coral": { + "runtime_id": -588, + "component_based": false, + "version": 2 + }, + "minecraft:dead_fire_coral_block": { + "runtime_id": -856, + "component_based": false, + "version": 2 + }, + "minecraft:dead_fire_coral_fan": { + "runtime_id": -846, + "component_based": false, + "version": 2 + }, + "minecraft:dead_fire_coral_wall_fan": { + "runtime_id": -909, + "component_based": false, + "version": 2 + }, + "minecraft:dead_horn_coral": { + "runtime_id": -589, + "component_based": false, + "version": 2 + }, + "minecraft:dead_horn_coral_block": { + "runtime_id": -857, + "component_based": false, + "version": 2 + }, + "minecraft:dead_horn_coral_fan": { + "runtime_id": -847, + "component_based": false, + "version": 2 + }, + "minecraft:dead_horn_coral_wall_fan": { + "runtime_id": -910, + "component_based": false, + "version": 2 + }, + "minecraft:dead_tube_coral": { + "runtime_id": -585, + "component_based": false, + "version": 2 + }, + "minecraft:dead_tube_coral_block": { + "runtime_id": -853, + "component_based": false, + "version": 2 + }, + "minecraft:dead_tube_coral_fan": { + "runtime_id": -134, + "component_based": false, + "version": 2 + }, + "minecraft:dead_tube_coral_wall_fan": { + "runtime_id": -905, + "component_based": false, + "version": 2 + }, + "minecraft:deadbush": { + "runtime_id": 32, + "component_based": false, + "version": 2 + }, + "minecraft:debug_stick": { + "runtime_id": 626, + "component_based": false, + "version": 2 + }, + "minecraft:decorated_pot": { + "runtime_id": -551, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate": { + "runtime_id": -378, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_brick_double_slab": { + "runtime_id": -399, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_brick_slab": { + "runtime_id": -392, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_brick_stairs": { + "runtime_id": -393, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_brick_wall": { + "runtime_id": -394, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_bricks": { + "runtime_id": -391, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_coal_ore": { + "runtime_id": -406, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_copper_ore": { + "runtime_id": -408, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_diamond_ore": { + "runtime_id": -405, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_emerald_ore": { + "runtime_id": -407, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_gold_ore": { + "runtime_id": -402, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_iron_ore": { + "runtime_id": -401, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_lapis_ore": { + "runtime_id": -400, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_redstone_ore": { + "runtime_id": -403, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_tile_double_slab": { + "runtime_id": -398, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_tile_slab": { + "runtime_id": -388, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_tile_stairs": { + "runtime_id": -389, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_tile_wall": { + "runtime_id": -390, + "component_based": false, + "version": 2 + }, + "minecraft:deepslate_tiles": { + "runtime_id": -387, + "component_based": false, + "version": 2 + }, + "minecraft:deny": { + "runtime_id": 211, + "component_based": false, + "version": 2 + }, + "minecraft:deprecated_anvil": { + "runtime_id": -961, + "component_based": false, + "version": 2 + }, + "minecraft:deprecated_purpur_block_1": { + "runtime_id": -950, + "component_based": false, + "version": 2 + }, + "minecraft:deprecated_purpur_block_2": { + "runtime_id": -952, + "component_based": false, + "version": 2 + }, + "minecraft:detector_rail": { + "runtime_id": 28, + "component_based": false, + "version": 2 + }, + "minecraft:diamond": { + "runtime_id": 328, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_axe": { + "runtime_id": 343, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_block": { + "runtime_id": 57, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_boots": { + "runtime_id": 375, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_chestplate": { + "runtime_id": 373, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_helmet": { + "runtime_id": 372, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_hoe": { + "runtime_id": 357, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_horse_armor": { + "runtime_id": 566, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_leggings": { + "runtime_id": 374, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_ore": { + "runtime_id": 56, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_pickaxe": { + "runtime_id": 342, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_shovel": { + "runtime_id": 341, + "component_based": false, + "version": 2 + }, + "minecraft:diamond_sword": { + "runtime_id": 340, + "component_based": false, + "version": 2 + }, + "minecraft:diorite": { + "runtime_id": -592, + "component_based": false, + "version": 2 + }, + "minecraft:diorite_double_slab": { + "runtime_id": -921, + "component_based": false, + "version": 2 + }, + "minecraft:diorite_slab": { + "runtime_id": -894, + "component_based": false, + "version": 2 + }, + "minecraft:diorite_stairs": { + "runtime_id": -170, + "component_based": false, + "version": 2 + }, + "minecraft:diorite_wall": { + "runtime_id": -973, + "component_based": false, + "version": 2 + }, + "minecraft:dirt": { + "runtime_id": 3, + "component_based": false, + "version": 2 + }, + "minecraft:dirt_with_roots": { + "runtime_id": -318, + "component_based": false, + "version": 2 + }, + "minecraft:disc_fragment_5": { + "runtime_id": 675, + "component_based": false, + "version": 2 + }, + "minecraft:dispenser": { + "runtime_id": 23, + "component_based": false, + "version": 2 + }, + "minecraft:dolphin_spawn_egg": { + "runtime_id": 512, + "component_based": false, + "version": 2 + }, + "minecraft:donkey_spawn_egg": { + "runtime_id": 493, + "component_based": false, + "version": 2 + }, + "minecraft:double_cut_copper_slab": { + "runtime_id": -368, + "component_based": false, + "version": 2 + }, + "minecraft:double_plant": { + "runtime_id": 771, + "component_based": false, + "version": 2 + }, + "minecraft:double_stone_block_slab": { + "runtime_id": 760, + "component_based": false, + "version": 2 + }, + "minecraft:double_stone_block_slab2": { + "runtime_id": 761, + "component_based": false, + "version": 2 + }, + "minecraft:double_stone_block_slab3": { + "runtime_id": 762, + "component_based": false, + "version": 2 + }, + "minecraft:double_stone_block_slab4": { + "runtime_id": 763, + "component_based": false, + "version": 2 + }, + "minecraft:dragon_breath": { + "runtime_id": 593, + "component_based": false, + "version": 2 + }, + "minecraft:dragon_egg": { + "runtime_id": 122, + "component_based": false, + "version": 2 + }, + "minecraft:dragon_head": { + "runtime_id": -969, + "component_based": false, + "version": 2 + }, + "minecraft:dried_kelp": { + "runtime_id": 292, + "component_based": false, + "version": 0 + }, + "minecraft:dried_kelp_block": { + "runtime_id": -139, + "component_based": false, + "version": 2 + }, + "minecraft:dripstone_block": { + "runtime_id": -317, + "component_based": false, + "version": 2 + }, + "minecraft:dropper": { + "runtime_id": 125, + "component_based": false, + "version": 2 + }, + "minecraft:drowned_spawn_egg": { + "runtime_id": 511, + "component_based": false, + "version": 2 + }, + "minecraft:dune_armor_trim_smithing_template": { + "runtime_id": 720, + "component_based": false, + "version": 2 + }, + "minecraft:dye": { + "runtime_id": 793, + "component_based": false, + "version": 2 + }, + "minecraft:echo_shard": { + "runtime_id": 685, + "component_based": false, + "version": 2 + }, + "minecraft:egg": { + "runtime_id": 416, + "component_based": false, + "version": 2 + }, + "minecraft:elder_guardian_spawn_egg": { + "runtime_id": 499, + "component_based": false, + "version": 2 + }, + "minecraft:element_0": { + "runtime_id": 36, + "component_based": false, + "version": 2 + }, + "minecraft:element_1": { + "runtime_id": -12, + "component_based": false, + "version": 2 + }, + "minecraft:element_10": { + "runtime_id": -21, + "component_based": false, + "version": 2 + }, + "minecraft:element_100": { + "runtime_id": -111, + "component_based": false, + "version": 2 + }, + "minecraft:element_101": { + "runtime_id": -112, + "component_based": false, + "version": 2 + }, + "minecraft:element_102": { + "runtime_id": -113, + "component_based": false, + "version": 2 + }, + "minecraft:element_103": { + "runtime_id": -114, + "component_based": false, + "version": 2 + }, + "minecraft:element_104": { + "runtime_id": -115, + "component_based": false, + "version": 2 + }, + "minecraft:element_105": { + "runtime_id": -116, + "component_based": false, + "version": 2 + }, + "minecraft:element_106": { + "runtime_id": -117, + "component_based": false, + "version": 2 + }, + "minecraft:element_107": { + "runtime_id": -118, + "component_based": false, + "version": 2 + }, + "minecraft:element_108": { + "runtime_id": -119, + "component_based": false, + "version": 2 + }, + "minecraft:element_109": { + "runtime_id": -120, + "component_based": false, + "version": 2 + }, + "minecraft:element_11": { + "runtime_id": -22, + "component_based": false, + "version": 2 + }, + "minecraft:element_110": { + "runtime_id": -121, + "component_based": false, + "version": 2 + }, + "minecraft:element_111": { + "runtime_id": -122, + "component_based": false, + "version": 2 + }, + "minecraft:element_112": { + "runtime_id": -123, + "component_based": false, + "version": 2 + }, + "minecraft:element_113": { + "runtime_id": -124, + "component_based": false, + "version": 2 + }, + "minecraft:element_114": { + "runtime_id": -125, + "component_based": false, + "version": 2 + }, + "minecraft:element_115": { + "runtime_id": -126, + "component_based": false, + "version": 2 + }, + "minecraft:element_116": { + "runtime_id": -127, + "component_based": false, + "version": 2 + }, + "minecraft:element_117": { + "runtime_id": -128, + "component_based": false, + "version": 2 + }, + "minecraft:element_118": { + "runtime_id": -129, + "component_based": false, + "version": 2 + }, + "minecraft:element_12": { + "runtime_id": -23, + "component_based": false, + "version": 2 + }, + "minecraft:element_13": { + "runtime_id": -24, + "component_based": false, + "version": 2 + }, + "minecraft:element_14": { + "runtime_id": -25, + "component_based": false, + "version": 2 + }, + "minecraft:element_15": { + "runtime_id": -26, + "component_based": false, + "version": 2 + }, + "minecraft:element_16": { + "runtime_id": -27, + "component_based": false, + "version": 2 + }, + "minecraft:element_17": { + "runtime_id": -28, + "component_based": false, + "version": 2 + }, + "minecraft:element_18": { + "runtime_id": -29, + "component_based": false, + "version": 2 + }, + "minecraft:element_19": { + "runtime_id": -30, + "component_based": false, + "version": 2 + }, + "minecraft:element_2": { + "runtime_id": -13, + "component_based": false, + "version": 2 + }, + "minecraft:element_20": { + "runtime_id": -31, + "component_based": false, + "version": 2 + }, + "minecraft:element_21": { + "runtime_id": -32, + "component_based": false, + "version": 2 + }, + "minecraft:element_22": { + "runtime_id": -33, + "component_based": false, + "version": 2 + }, + "minecraft:element_23": { + "runtime_id": -34, + "component_based": false, + "version": 2 + }, + "minecraft:element_24": { + "runtime_id": -35, + "component_based": false, + "version": 2 + }, + "minecraft:element_25": { + "runtime_id": -36, + "component_based": false, + "version": 2 + }, + "minecraft:element_26": { + "runtime_id": -37, + "component_based": false, + "version": 2 + }, + "minecraft:element_27": { + "runtime_id": -38, + "component_based": false, + "version": 2 + }, + "minecraft:element_28": { + "runtime_id": -39, + "component_based": false, + "version": 2 + }, + "minecraft:element_29": { + "runtime_id": -40, + "component_based": false, + "version": 2 + }, + "minecraft:element_3": { + "runtime_id": -14, + "component_based": false, + "version": 2 + }, + "minecraft:element_30": { + "runtime_id": -41, + "component_based": false, + "version": 2 + }, + "minecraft:element_31": { + "runtime_id": -42, + "component_based": false, + "version": 2 + }, + "minecraft:element_32": { + "runtime_id": -43, + "component_based": false, + "version": 2 + }, + "minecraft:element_33": { + "runtime_id": -44, + "component_based": false, + "version": 2 + }, + "minecraft:element_34": { + "runtime_id": -45, + "component_based": false, + "version": 2 + }, + "minecraft:element_35": { + "runtime_id": -46, + "component_based": false, + "version": 2 + }, + "minecraft:element_36": { + "runtime_id": -47, + "component_based": false, + "version": 2 + }, + "minecraft:element_37": { + "runtime_id": -48, + "component_based": false, + "version": 2 + }, + "minecraft:element_38": { + "runtime_id": -49, + "component_based": false, + "version": 2 + }, + "minecraft:element_39": { + "runtime_id": -50, + "component_based": false, + "version": 2 + }, + "minecraft:element_4": { + "runtime_id": -15, + "component_based": false, + "version": 2 + }, + "minecraft:element_40": { + "runtime_id": -51, + "component_based": false, + "version": 2 + }, + "minecraft:element_41": { + "runtime_id": -52, + "component_based": false, + "version": 2 + }, + "minecraft:element_42": { + "runtime_id": -53, + "component_based": false, + "version": 2 + }, + "minecraft:element_43": { + "runtime_id": -54, + "component_based": false, + "version": 2 + }, + "minecraft:element_44": { + "runtime_id": -55, + "component_based": false, + "version": 2 + }, + "minecraft:element_45": { + "runtime_id": -56, + "component_based": false, + "version": 2 + }, + "minecraft:element_46": { + "runtime_id": -57, + "component_based": false, + "version": 2 + }, + "minecraft:element_47": { + "runtime_id": -58, + "component_based": false, + "version": 2 + }, + "minecraft:element_48": { + "runtime_id": -59, + "component_based": false, + "version": 2 + }, + "minecraft:element_49": { + "runtime_id": -60, + "component_based": false, + "version": 2 + }, + "minecraft:element_5": { + "runtime_id": -16, + "component_based": false, + "version": 2 + }, + "minecraft:element_50": { + "runtime_id": -61, + "component_based": false, + "version": 2 + }, + "minecraft:element_51": { + "runtime_id": -62, + "component_based": false, + "version": 2 + }, + "minecraft:element_52": { + "runtime_id": -63, + "component_based": false, + "version": 2 + }, + "minecraft:element_53": { + "runtime_id": -64, + "component_based": false, + "version": 2 + }, + "minecraft:element_54": { + "runtime_id": -65, + "component_based": false, + "version": 2 + }, + "minecraft:element_55": { + "runtime_id": -66, + "component_based": false, + "version": 2 + }, + "minecraft:element_56": { + "runtime_id": -67, + "component_based": false, + "version": 2 + }, + "minecraft:element_57": { + "runtime_id": -68, + "component_based": false, + "version": 2 + }, + "minecraft:element_58": { + "runtime_id": -69, + "component_based": false, + "version": 2 + }, + "minecraft:element_59": { + "runtime_id": -70, + "component_based": false, + "version": 2 + }, + "minecraft:element_6": { + "runtime_id": -17, + "component_based": false, + "version": 2 + }, + "minecraft:element_60": { + "runtime_id": -71, + "component_based": false, + "version": 2 + }, + "minecraft:element_61": { + "runtime_id": -72, + "component_based": false, + "version": 2 + }, + "minecraft:element_62": { + "runtime_id": -73, + "component_based": false, + "version": 2 + }, + "minecraft:element_63": { + "runtime_id": -74, + "component_based": false, + "version": 2 + }, + "minecraft:element_64": { + "runtime_id": -75, + "component_based": false, + "version": 2 + }, + "minecraft:element_65": { + "runtime_id": -76, + "component_based": false, + "version": 2 + }, + "minecraft:element_66": { + "runtime_id": -77, + "component_based": false, + "version": 2 + }, + "minecraft:element_67": { + "runtime_id": -78, + "component_based": false, + "version": 2 + }, + "minecraft:element_68": { + "runtime_id": -79, + "component_based": false, + "version": 2 + }, + "minecraft:element_69": { + "runtime_id": -80, + "component_based": false, + "version": 2 + }, + "minecraft:element_7": { + "runtime_id": -18, + "component_based": false, + "version": 2 + }, + "minecraft:element_70": { + "runtime_id": -81, + "component_based": false, + "version": 2 + }, + "minecraft:element_71": { + "runtime_id": -82, + "component_based": false, + "version": 2 + }, + "minecraft:element_72": { + "runtime_id": -83, + "component_based": false, + "version": 2 + }, + "minecraft:element_73": { + "runtime_id": -84, + "component_based": false, + "version": 2 + }, + "minecraft:element_74": { + "runtime_id": -85, + "component_based": false, + "version": 2 + }, + "minecraft:element_75": { + "runtime_id": -86, + "component_based": false, + "version": 2 + }, + "minecraft:element_76": { + "runtime_id": -87, + "component_based": false, + "version": 2 + }, + "minecraft:element_77": { + "runtime_id": -88, + "component_based": false, + "version": 2 + }, + "minecraft:element_78": { + "runtime_id": -89, + "component_based": false, + "version": 2 + }, + "minecraft:element_79": { + "runtime_id": -90, + "component_based": false, + "version": 2 + }, + "minecraft:element_8": { + "runtime_id": -19, + "component_based": false, + "version": 2 + }, + "minecraft:element_80": { + "runtime_id": -91, + "component_based": false, + "version": 2 + }, + "minecraft:element_81": { + "runtime_id": -92, + "component_based": false, + "version": 2 + }, + "minecraft:element_82": { + "runtime_id": -93, + "component_based": false, + "version": 2 + }, + "minecraft:element_83": { + "runtime_id": -94, + "component_based": false, + "version": 2 + }, + "minecraft:element_84": { + "runtime_id": -95, + "component_based": false, + "version": 2 + }, + "minecraft:element_85": { + "runtime_id": -96, + "component_based": false, + "version": 2 + }, + "minecraft:element_86": { + "runtime_id": -97, + "component_based": false, + "version": 2 + }, + "minecraft:element_87": { + "runtime_id": -98, + "component_based": false, + "version": 2 + }, + "minecraft:element_88": { + "runtime_id": -99, + "component_based": false, + "version": 2 + }, + "minecraft:element_89": { + "runtime_id": -100, + "component_based": false, + "version": 2 + }, + "minecraft:element_9": { + "runtime_id": -20, + "component_based": false, + "version": 2 + }, + "minecraft:element_90": { + "runtime_id": -101, + "component_based": false, + "version": 2 + }, + "minecraft:element_91": { + "runtime_id": -102, + "component_based": false, + "version": 2 + }, + "minecraft:element_92": { + "runtime_id": -103, + "component_based": false, + "version": 2 + }, + "minecraft:element_93": { + "runtime_id": -104, + "component_based": false, + "version": 2 + }, + "minecraft:element_94": { + "runtime_id": -105, + "component_based": false, + "version": 2 + }, + "minecraft:element_95": { + "runtime_id": -106, + "component_based": false, + "version": 2 + }, + "minecraft:element_96": { + "runtime_id": -107, + "component_based": false, + "version": 2 + }, + "minecraft:element_97": { + "runtime_id": -108, + "component_based": false, + "version": 2 + }, + "minecraft:element_98": { + "runtime_id": -109, + "component_based": false, + "version": 2 + }, + "minecraft:element_99": { + "runtime_id": -110, + "component_based": false, + "version": 2 + }, + "minecraft:element_constructor": { + "runtime_id": -987, + "component_based": false, + "version": 2 + }, + "minecraft:elytra": { + "runtime_id": 597, + "component_based": false, + "version": 2 + }, + "minecraft:emerald": { + "runtime_id": 546, + "component_based": false, + "version": 2 + }, + "minecraft:emerald_block": { + "runtime_id": 133, + "component_based": false, + "version": 2 + }, + "minecraft:emerald_ore": { + "runtime_id": 129, + "component_based": false, + "version": 2 + }, + "minecraft:empty_map": { + "runtime_id": 549, + "component_based": false, + "version": 2 + }, + "minecraft:enchanted_book": { + "runtime_id": 554, + "component_based": false, + "version": 2 + }, + "minecraft:enchanted_golden_apple": { + "runtime_id": 281, + "component_based": false, + "version": 0 + }, + "minecraft:enchanting_table": { + "runtime_id": 116, + "component_based": false, + "version": 2 + }, + "minecraft:end_brick_stairs": { + "runtime_id": -178, + "component_based": false, + "version": 2 + }, + "minecraft:end_bricks": { + "runtime_id": 206, + "component_based": false, + "version": 2 + }, + "minecraft:end_crystal": { + "runtime_id": 796, + "component_based": false, + "version": 2 + }, + "minecraft:end_gateway": { + "runtime_id": 209, + "component_based": false, + "version": 2 + }, + "minecraft:end_portal": { + "runtime_id": 119, + "component_based": false, + "version": 2 + }, + "minecraft:end_portal_frame": { + "runtime_id": 120, + "component_based": false, + "version": 2 + }, + "minecraft:end_rod": { + "runtime_id": 208, + "component_based": false, + "version": 2 + }, + "minecraft:end_stone": { + "runtime_id": 121, + "component_based": false, + "version": 2 + }, + "minecraft:end_stone_brick_double_slab": { + "runtime_id": -167, + "component_based": false, + "version": 2 + }, + "minecraft:end_stone_brick_slab": { + "runtime_id": -162, + "component_based": false, + "version": 2 + }, + "minecraft:end_stone_brick_wall": { + "runtime_id": -980, + "component_based": false, + "version": 2 + }, + "minecraft:ender_chest": { + "runtime_id": 130, + "component_based": false, + "version": 2 + }, + "minecraft:ender_dragon_spawn_egg": { + "runtime_id": 535, + "component_based": false, + "version": 2 + }, + "minecraft:ender_eye": { + "runtime_id": 460, + "component_based": false, + "version": 2 + }, + "minecraft:ender_pearl": { + "runtime_id": 448, + "component_based": false, + "version": 2 + }, + "minecraft:enderman_spawn_egg": { + "runtime_id": 469, + "component_based": false, + "version": 2 + }, + "minecraft:endermite_spawn_egg": { + "runtime_id": 487, + "component_based": false, + "version": 2 + }, + "minecraft:evoker_spawn_egg": { + "runtime_id": 503, + "component_based": false, + "version": 2 + }, + "minecraft:experience_bottle": { + "runtime_id": 542, + "component_based": false, + "version": 2 + }, + "minecraft:explorer_pottery_sherd": { + "runtime_id": 701, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_chiseled_copper": { + "runtime_id": -761, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_copper": { + "runtime_id": -341, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_copper_bulb": { + "runtime_id": -777, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_copper_door": { + "runtime_id": -785, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_copper_grate": { + "runtime_id": -769, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_copper_trapdoor": { + "runtime_id": -793, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_cut_copper": { + "runtime_id": -348, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_cut_copper_slab": { + "runtime_id": -362, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_cut_copper_stairs": { + "runtime_id": -355, + "component_based": false, + "version": 2 + }, + "minecraft:exposed_double_cut_copper_slab": { + "runtime_id": -369, + "component_based": false, + "version": 2 + }, + "minecraft:eye_armor_trim_smithing_template": { + "runtime_id": 724, + "component_based": false, + "version": 2 + }, + "minecraft:farmland": { + "runtime_id": 60, + "component_based": false, + "version": 2 + }, + "minecraft:feather": { + "runtime_id": 352, + "component_based": false, + "version": 2 + }, + "minecraft:fence": { + "runtime_id": 753, + "component_based": false, + "version": 2 + }, + "minecraft:fence_gate": { + "runtime_id": 107, + "component_based": false, + "version": 2 + }, + "minecraft:fermented_spider_eye": { + "runtime_id": 455, + "component_based": false, + "version": 2 + }, + "minecraft:fern": { + "runtime_id": -848, + "component_based": false, + "version": 2 + }, + "minecraft:field_masoned_banner_pattern": { + "runtime_id": 618, + "component_based": false, + "version": 2 + }, + "minecraft:filled_map": { + "runtime_id": 446, + "component_based": false, + "version": 2 + }, + "minecraft:fire": { + "runtime_id": 51, + "component_based": false, + "version": 2 + }, + "minecraft:fire_charge": { + "runtime_id": 543, + "component_based": false, + "version": 2 + }, + "minecraft:fire_coral": { + "runtime_id": -583, + "component_based": false, + "version": 2 + }, + "minecraft:fire_coral_block": { + "runtime_id": -851, + "component_based": false, + "version": 2 + }, + "minecraft:fire_coral_fan": { + "runtime_id": -842, + "component_based": false, + "version": 2 + }, + "minecraft:fire_coral_wall_fan": { + "runtime_id": -907, + "component_based": false, + "version": 2 + }, + "minecraft:firework_rocket": { + "runtime_id": 552, + "component_based": false, + "version": 2 + }, + "minecraft:firework_star": { + "runtime_id": 553, + "component_based": false, + "version": 2 + }, + "minecraft:fishing_rod": { + "runtime_id": 418, + "component_based": true, + "version": 2 + }, + "minecraft:fletching_table": { + "runtime_id": -201, + "component_based": false, + "version": 2 + }, + "minecraft:flint": { + "runtime_id": 381, + "component_based": false, + "version": 2 + }, + "minecraft:flint_and_steel": { + "runtime_id": 323, + "component_based": false, + "version": 2 + }, + "minecraft:flow_armor_trim_smithing_template": { + "runtime_id": 735, + "component_based": false, + "version": 2 + }, + "minecraft:flow_banner_pattern": { + "runtime_id": 622, + "component_based": false, + "version": 2 + }, + "minecraft:flow_pottery_sherd": { + "runtime_id": 702, + "component_based": false, + "version": 2 + }, + "minecraft:flower_banner_pattern": { + "runtime_id": 614, + "component_based": false, + "version": 2 + }, + "minecraft:flower_pot": { + "runtime_id": 548, + "component_based": true, + "version": 2 + }, + "minecraft:flowering_azalea": { + "runtime_id": -338, + "component_based": false, + "version": 2 + }, + "minecraft:flowing_lava": { + "runtime_id": 10, + "component_based": false, + "version": 2 + }, + "minecraft:flowing_water": { + "runtime_id": 8, + "component_based": false, + "version": 2 + }, + "minecraft:fox_spawn_egg": { + "runtime_id": 518, + "component_based": false, + "version": 2 + }, + "minecraft:frame": { + "runtime_id": 547, + "component_based": true, + "version": 2 + }, + "minecraft:friend_pottery_sherd": { + "runtime_id": 703, + "component_based": false, + "version": 2 + }, + "minecraft:frog_spawn": { + "runtime_id": -468, + "component_based": false, + "version": 2 + }, + "minecraft:frog_spawn_egg": { + "runtime_id": 666, + "component_based": false, + "version": 2 + }, + "minecraft:frosted_ice": { + "runtime_id": 207, + "component_based": false, + "version": 2 + }, + "minecraft:furnace": { + "runtime_id": 61, + "component_based": false, + "version": 2 + }, + "minecraft:ghast_spawn_egg": { + "runtime_id": 481, + "component_based": false, + "version": 2 + }, + "minecraft:ghast_tear": { + "runtime_id": 451, + "component_based": false, + "version": 2 + }, + "minecraft:gilded_blackstone": { + "runtime_id": -281, + "component_based": false, + "version": 2 + }, + "minecraft:glass": { + "runtime_id": 20, + "component_based": false, + "version": 2 + }, + "minecraft:glass_bottle": { + "runtime_id": 454, + "component_based": false, + "version": 2 + }, + "minecraft:glass_pane": { + "runtime_id": 102, + "component_based": false, + "version": 2 + }, + "minecraft:glistering_melon_slice": { + "runtime_id": 461, + "component_based": false, + "version": 2 + }, + "minecraft:globe_banner_pattern": { + "runtime_id": 621, + "component_based": false, + "version": 2 + }, + "minecraft:glow_berries": { + "runtime_id": 797, + "component_based": false, + "version": 0 + }, + "minecraft:glow_frame": { + "runtime_id": 661, + "component_based": true, + "version": 2 + }, + "minecraft:glow_ink_sac": { + "runtime_id": 537, + "component_based": false, + "version": 2 + }, + "minecraft:glow_lichen": { + "runtime_id": -411, + "component_based": false, + "version": 2 + }, + "minecraft:glow_squid_spawn_egg": { + "runtime_id": 532, + "component_based": false, + "version": 2 + }, + "minecraft:glow_stick": { + "runtime_id": 639, + "component_based": false, + "version": 2 + }, + "minecraft:glowingobsidian": { + "runtime_id": 246, + "component_based": false, + "version": 2 + }, + "minecraft:glowstone": { + "runtime_id": 89, + "component_based": false, + "version": 2 + }, + "minecraft:glowstone_dust": { + "runtime_id": 420, + "component_based": false, + "version": 2 + }, + "minecraft:goat_horn": { + "runtime_id": 665, + "component_based": false, + "version": 2 + }, + "minecraft:goat_spawn_egg": { + "runtime_id": 531, + "component_based": false, + "version": 2 + }, + "minecraft:gold_block": { + "runtime_id": 41, + "component_based": false, + "version": 2 + }, + "minecraft:gold_ingot": { + "runtime_id": 330, + "component_based": false, + "version": 2 + }, + "minecraft:gold_nugget": { + "runtime_id": 452, + "component_based": false, + "version": 2 + }, + "minecraft:gold_ore": { + "runtime_id": 14, + "component_based": false, + "version": 2 + }, + "minecraft:golden_apple": { + "runtime_id": 280, + "component_based": false, + "version": 0 + }, + "minecraft:golden_axe": { + "runtime_id": 350, + "component_based": false, + "version": 2 + }, + "minecraft:golden_boots": { + "runtime_id": 379, + "component_based": false, + "version": 2 + }, + "minecraft:golden_carrot": { + "runtime_id": 305, + "component_based": false, + "version": 0 + }, + "minecraft:golden_chestplate": { + "runtime_id": 377, + "component_based": false, + "version": 2 + }, + "minecraft:golden_helmet": { + "runtime_id": 376, + "component_based": false, + "version": 2 + }, + "minecraft:golden_hoe": { + "runtime_id": 358, + "component_based": false, + "version": 2 + }, + "minecraft:golden_horse_armor": { + "runtime_id": 565, + "component_based": false, + "version": 2 + }, + "minecraft:golden_leggings": { + "runtime_id": 378, + "component_based": false, + "version": 2 + }, + "minecraft:golden_pickaxe": { + "runtime_id": 349, + "component_based": false, + "version": 2 + }, + "minecraft:golden_rail": { + "runtime_id": 27, + "component_based": false, + "version": 2 + }, + "minecraft:golden_shovel": { + "runtime_id": 348, + "component_based": false, + "version": 2 + }, + "minecraft:golden_sword": { + "runtime_id": 347, + "component_based": false, + "version": 2 + }, + "minecraft:granite": { + "runtime_id": -590, + "component_based": false, + "version": 2 + }, + "minecraft:granite_double_slab": { + "runtime_id": -923, + "component_based": false, + "version": 2 + }, + "minecraft:granite_slab": { + "runtime_id": -896, + "component_based": false, + "version": 2 + }, + "minecraft:granite_stairs": { + "runtime_id": -169, + "component_based": false, + "version": 2 + }, + "minecraft:granite_wall": { + "runtime_id": -972, + "component_based": false, + "version": 2 + }, + "minecraft:grass_block": { + "runtime_id": 2, + "component_based": false, + "version": 2 + }, + "minecraft:grass_path": { + "runtime_id": 198, + "component_based": false, + "version": 2 + }, + "minecraft:gravel": { + "runtime_id": 13, + "component_based": false, + "version": 2 + }, + "minecraft:gray_bundle": { + "runtime_id": 266, + "component_based": true, + "version": 1 + }, + "minecraft:gray_candle": { + "runtime_id": -420, + "component_based": false, + "version": 2 + }, + "minecraft:gray_candle_cake": { + "runtime_id": -437, + "component_based": false, + "version": 2 + }, + "minecraft:gray_carpet": { + "runtime_id": -603, + "component_based": false, + "version": 2 + }, + "minecraft:gray_concrete": { + "runtime_id": -634, + "component_based": false, + "version": 2 + }, + "minecraft:gray_concrete_powder": { + "runtime_id": -715, + "component_based": false, + "version": 2 + }, + "minecraft:gray_dye": { + "runtime_id": 429, + "component_based": false, + "version": 2 + }, + "minecraft:gray_glazed_terracotta": { + "runtime_id": 227, + "component_based": false, + "version": 2 + }, + "minecraft:gray_shulker_box": { + "runtime_id": -619, + "component_based": false, + "version": 2 + }, + "minecraft:gray_stained_glass": { + "runtime_id": -679, + "component_based": false, + "version": 2 + }, + "minecraft:gray_stained_glass_pane": { + "runtime_id": -649, + "component_based": false, + "version": 2 + }, + "minecraft:gray_terracotta": { + "runtime_id": -730, + "component_based": false, + "version": 2 + }, + "minecraft:gray_wool": { + "runtime_id": -553, + "component_based": false, + "version": 2 + }, + "minecraft:green_bundle": { + "runtime_id": 257, + "component_based": true, + "version": 1 + }, + "minecraft:green_candle": { + "runtime_id": -426, + "component_based": false, + "version": 2 + }, + "minecraft:green_candle_cake": { + "runtime_id": -443, + "component_based": false, + "version": 2 + }, + "minecraft:green_carpet": { + "runtime_id": -609, + "component_based": false, + "version": 2 + }, + "minecraft:green_concrete": { + "runtime_id": -640, + "component_based": false, + "version": 2 + }, + "minecraft:green_concrete_powder": { + "runtime_id": -721, + "component_based": false, + "version": 2 + }, + "minecraft:green_dye": { + "runtime_id": 423, + "component_based": false, + "version": 2 + }, + "minecraft:green_glazed_terracotta": { + "runtime_id": 233, + "component_based": false, + "version": 2 + }, + "minecraft:green_shulker_box": { + "runtime_id": -625, + "component_based": false, + "version": 2 + }, + "minecraft:green_stained_glass": { + "runtime_id": -685, + "component_based": false, + "version": 2 + }, + "minecraft:green_stained_glass_pane": { + "runtime_id": -655, + "component_based": false, + "version": 2 + }, + "minecraft:green_terracotta": { + "runtime_id": -736, + "component_based": false, + "version": 2 + }, + "minecraft:green_wool": { + "runtime_id": -560, + "component_based": false, + "version": 2 + }, + "minecraft:grindstone": { + "runtime_id": -195, + "component_based": false, + "version": 2 + }, + "minecraft:guardian_spawn_egg": { + "runtime_id": 488, + "component_based": false, + "version": 2 + }, + "minecraft:gunpowder": { + "runtime_id": 353, + "component_based": false, + "version": 2 + }, + "minecraft:guster_banner_pattern": { + "runtime_id": 623, + "component_based": false, + "version": 2 + }, + "minecraft:guster_pottery_sherd": { + "runtime_id": 704, + "component_based": false, + "version": 2 + }, + "minecraft:hanging_roots": { + "runtime_id": -319, + "component_based": false, + "version": 2 + }, + "minecraft:hard_black_stained_glass": { + "runtime_id": -702, + "component_based": false, + "version": 2 + }, + "minecraft:hard_black_stained_glass_pane": { + "runtime_id": -672, + "component_based": false, + "version": 2 + }, + "minecraft:hard_blue_stained_glass": { + "runtime_id": -698, + "component_based": false, + "version": 2 + }, + "minecraft:hard_blue_stained_glass_pane": { + "runtime_id": -668, + "component_based": false, + "version": 2 + }, + "minecraft:hard_brown_stained_glass": { + "runtime_id": -699, + "component_based": false, + "version": 2 + }, + "minecraft:hard_brown_stained_glass_pane": { + "runtime_id": -669, + "component_based": false, + "version": 2 + }, + "minecraft:hard_cyan_stained_glass": { + "runtime_id": -696, + "component_based": false, + "version": 2 + }, + "minecraft:hard_cyan_stained_glass_pane": { + "runtime_id": -666, + "component_based": false, + "version": 2 + }, + "minecraft:hard_glass": { + "runtime_id": 253, + "component_based": false, + "version": 2 + }, + "minecraft:hard_glass_pane": { + "runtime_id": 190, + "component_based": false, + "version": 2 + }, + "minecraft:hard_gray_stained_glass": { + "runtime_id": -694, + "component_based": false, + "version": 2 + }, + "minecraft:hard_gray_stained_glass_pane": { + "runtime_id": -664, + "component_based": false, + "version": 2 + }, + "minecraft:hard_green_stained_glass": { + "runtime_id": -700, + "component_based": false, + "version": 2 + }, + "minecraft:hard_green_stained_glass_pane": { + "runtime_id": -670, + "component_based": false, + "version": 2 + }, + "minecraft:hard_light_blue_stained_glass": { + "runtime_id": -690, + "component_based": false, + "version": 2 + }, + "minecraft:hard_light_blue_stained_glass_pane": { + "runtime_id": -660, + "component_based": false, + "version": 2 + }, + "minecraft:hard_light_gray_stained_glass": { + "runtime_id": -695, + "component_based": false, + "version": 2 + }, + "minecraft:hard_light_gray_stained_glass_pane": { + "runtime_id": -665, + "component_based": false, + "version": 2 + }, + "minecraft:hard_lime_stained_glass": { + "runtime_id": -692, + "component_based": false, + "version": 2 + }, + "minecraft:hard_lime_stained_glass_pane": { + "runtime_id": -662, + "component_based": false, + "version": 2 + }, + "minecraft:hard_magenta_stained_glass": { + "runtime_id": -689, + "component_based": false, + "version": 2 + }, + "minecraft:hard_magenta_stained_glass_pane": { + "runtime_id": -659, + "component_based": false, + "version": 2 + }, + "minecraft:hard_orange_stained_glass": { + "runtime_id": -688, + "component_based": false, + "version": 2 + }, + "minecraft:hard_orange_stained_glass_pane": { + "runtime_id": -658, + "component_based": false, + "version": 2 + }, + "minecraft:hard_pink_stained_glass": { + "runtime_id": -693, + "component_based": false, + "version": 2 + }, + "minecraft:hard_pink_stained_glass_pane": { + "runtime_id": -663, + "component_based": false, + "version": 2 + }, + "minecraft:hard_purple_stained_glass": { + "runtime_id": -697, + "component_based": false, + "version": 2 + }, + "minecraft:hard_purple_stained_glass_pane": { + "runtime_id": -667, + "component_based": false, + "version": 2 + }, + "minecraft:hard_red_stained_glass": { + "runtime_id": -701, + "component_based": false, + "version": 2 + }, + "minecraft:hard_red_stained_glass_pane": { + "runtime_id": -671, + "component_based": false, + "version": 2 + }, + "minecraft:hard_stained_glass": { + "runtime_id": 787, + "component_based": false, + "version": 2 + }, + "minecraft:hard_stained_glass_pane": { + "runtime_id": 788, + "component_based": false, + "version": 2 + }, + "minecraft:hard_white_stained_glass": { + "runtime_id": 254, + "component_based": false, + "version": 2 + }, + "minecraft:hard_white_stained_glass_pane": { + "runtime_id": 191, + "component_based": false, + "version": 2 + }, + "minecraft:hard_yellow_stained_glass": { + "runtime_id": -691, + "component_based": false, + "version": 2 + }, + "minecraft:hard_yellow_stained_glass_pane": { + "runtime_id": -661, + "component_based": false, + "version": 2 + }, + "minecraft:hardened_clay": { + "runtime_id": 172, + "component_based": false, + "version": 2 + }, + "minecraft:hay_block": { + "runtime_id": 170, + "component_based": false, + "version": 2 + }, + "minecraft:heart_of_the_sea": { + "runtime_id": 604, + "component_based": false, + "version": 2 + }, + "minecraft:heart_pottery_sherd": { + "runtime_id": 705, + "component_based": false, + "version": 2 + }, + "minecraft:heartbreak_pottery_sherd": { + "runtime_id": 706, + "component_based": false, + "version": 2 + }, + "minecraft:heavy_core": { + "runtime_id": -316, + "component_based": false, + "version": 2 + }, + "minecraft:heavy_weighted_pressure_plate": { + "runtime_id": 148, + "component_based": false, + "version": 2 + }, + "minecraft:hoglin_spawn_egg": { + "runtime_id": 524, + "component_based": false, + "version": 2 + }, + "minecraft:honey_block": { + "runtime_id": -220, + "component_based": false, + "version": 2 + }, + "minecraft:honey_bottle": { + "runtime_id": 628, + "component_based": false, + "version": 0 + }, + "minecraft:honeycomb": { + "runtime_id": 627, + "component_based": false, + "version": 0 + }, + "minecraft:honeycomb_block": { + "runtime_id": -221, + "component_based": false, + "version": 2 + }, + "minecraft:hopper": { + "runtime_id": 560, + "component_based": true, + "version": 2 + }, + "minecraft:hopper_minecart": { + "runtime_id": 559, + "component_based": false, + "version": 2 + }, + "minecraft:horn_coral": { + "runtime_id": -584, + "component_based": false, + "version": 2 + }, + "minecraft:horn_coral_block": { + "runtime_id": -852, + "component_based": false, + "version": 2 + }, + "minecraft:horn_coral_fan": { + "runtime_id": -843, + "component_based": false, + "version": 2 + }, + "minecraft:horn_coral_wall_fan": { + "runtime_id": -137, + "component_based": false, + "version": 2 + }, + "minecraft:horse_spawn_egg": { + "runtime_id": 485, + "component_based": false, + "version": 2 + }, + "minecraft:host_armor_trim_smithing_template": { + "runtime_id": 734, + "component_based": false, + "version": 2 + }, + "minecraft:howl_pottery_sherd": { + "runtime_id": 707, + "component_based": false, + "version": 2 + }, + "minecraft:husk_spawn_egg": { + "runtime_id": 491, + "component_based": false, + "version": 2 + }, + "minecraft:ice": { + "runtime_id": 79, + "component_based": false, + "version": 2 + }, + "minecraft:ice_bomb": { + "runtime_id": 633, + "component_based": false, + "version": 2 + }, + "minecraft:infested_chiseled_stone_bricks": { + "runtime_id": -862, + "component_based": false, + "version": 2 + }, + "minecraft:infested_cobblestone": { + "runtime_id": -858, + "component_based": false, + "version": 2 + }, + "minecraft:infested_cracked_stone_bricks": { + "runtime_id": -861, + "component_based": false, + "version": 2 + }, + "minecraft:infested_deepslate": { + "runtime_id": -454, + "component_based": false, + "version": 2 + }, + "minecraft:infested_mossy_stone_bricks": { + "runtime_id": -860, + "component_based": false, + "version": 2 + }, + "minecraft:infested_stone": { + "runtime_id": 97, + "component_based": false, + "version": 2 + }, + "minecraft:infested_stone_bricks": { + "runtime_id": -859, + "component_based": false, + "version": 2 + }, + "minecraft:info_update": { + "runtime_id": 248, + "component_based": false, + "version": 2 + }, + "minecraft:info_update2": { + "runtime_id": 249, + "component_based": false, + "version": 2 + }, + "minecraft:ink_sac": { + "runtime_id": 439, + "component_based": false, + "version": 2 + }, + "minecraft:invisible_bedrock": { + "runtime_id": 95, + "component_based": false, + "version": 2 + }, + "minecraft:iron_axe": { + "runtime_id": 322, + "component_based": false, + "version": 2 + }, + "minecraft:iron_bars": { + "runtime_id": 101, + "component_based": false, + "version": 2 + }, + "minecraft:iron_block": { + "runtime_id": 42, + "component_based": false, + "version": 2 + }, + "minecraft:iron_boots": { + "runtime_id": 371, + "component_based": false, + "version": 2 + }, + "minecraft:iron_chestplate": { + "runtime_id": 369, + "component_based": false, + "version": 2 + }, + "minecraft:iron_door": { + "runtime_id": 397, + "component_based": false, + "version": 2 + }, + "minecraft:iron_golem_spawn_egg": { + "runtime_id": 533, + "component_based": false, + "version": 2 + }, + "minecraft:iron_helmet": { + "runtime_id": 368, + "component_based": false, + "version": 2 + }, + "minecraft:iron_hoe": { + "runtime_id": 356, + "component_based": false, + "version": 2 + }, + "minecraft:iron_horse_armor": { + "runtime_id": 564, + "component_based": false, + "version": 2 + }, + "minecraft:iron_ingot": { + "runtime_id": 329, + "component_based": false, + "version": 2 + }, + "minecraft:iron_leggings": { + "runtime_id": 370, + "component_based": false, + "version": 2 + }, + "minecraft:iron_nugget": { + "runtime_id": 602, + "component_based": false, + "version": 2 + }, + "minecraft:iron_ore": { + "runtime_id": 15, + "component_based": false, + "version": 2 + }, + "minecraft:iron_pickaxe": { + "runtime_id": 321, + "component_based": false, + "version": 2 + }, + "minecraft:iron_shovel": { + "runtime_id": 320, + "component_based": false, + "version": 2 + }, + "minecraft:iron_sword": { + "runtime_id": 331, + "component_based": false, + "version": 2 + }, + "minecraft:iron_trapdoor": { + "runtime_id": 167, + "component_based": false, + "version": 2 + }, + "minecraft:item.acacia_door": { + "runtime_id": 196, + "component_based": false, + "version": 2 + }, + "minecraft:item.bed": { + "runtime_id": 26, + "component_based": false, + "version": 2 + }, + "minecraft:item.beetroot": { + "runtime_id": 244, + "component_based": false, + "version": 2 + }, + "minecraft:item.birch_door": { + "runtime_id": 194, + "component_based": false, + "version": 2 + }, + "minecraft:item.brewing_stand": { + "runtime_id": 117, + "component_based": false, + "version": 2 + }, + "minecraft:item.cake": { + "runtime_id": 92, + "component_based": false, + "version": 2 + }, + "minecraft:item.camera": { + "runtime_id": 242, + "component_based": false, + "version": 2 + }, + "minecraft:item.campfire": { + "runtime_id": -209, + "component_based": false, + "version": 2 + }, + "minecraft:item.cauldron": { + "runtime_id": 118, + "component_based": false, + "version": 2 + }, + "minecraft:item.chain": { + "runtime_id": -286, + "component_based": false, + "version": 2 + }, + "minecraft:item.crimson_door": { + "runtime_id": -244, + "component_based": false, + "version": 2 + }, + "minecraft:item.dark_oak_door": { + "runtime_id": 197, + "component_based": false, + "version": 2 + }, + "minecraft:item.flower_pot": { + "runtime_id": 140, + "component_based": false, + "version": 2 + }, + "minecraft:item.frame": { + "runtime_id": 199, + "component_based": false, + "version": 2 + }, + "minecraft:item.glow_frame": { + "runtime_id": -339, + "component_based": false, + "version": 2 + }, + "minecraft:item.hopper": { + "runtime_id": 154, + "component_based": false, + "version": 2 + }, + "minecraft:item.iron_door": { + "runtime_id": 71, + "component_based": false, + "version": 2 + }, + "minecraft:item.jungle_door": { + "runtime_id": 195, + "component_based": false, + "version": 2 + }, + "minecraft:item.kelp": { + "runtime_id": -138, + "component_based": false, + "version": 2 + }, + "minecraft:item.mangrove_door": { + "runtime_id": -493, + "component_based": false, + "version": 2 + }, + "minecraft:item.nether_sprouts": { + "runtime_id": -238, + "component_based": false, + "version": 2 + }, + "minecraft:item.nether_wart": { + "runtime_id": 115, + "component_based": false, + "version": 2 + }, + "minecraft:item.reeds": { + "runtime_id": 83, + "component_based": false, + "version": 2 + }, + "minecraft:item.soul_campfire": { + "runtime_id": -290, + "component_based": false, + "version": 2 + }, + "minecraft:item.spruce_door": { + "runtime_id": 193, + "component_based": false, + "version": 2 + }, + "minecraft:item.warped_door": { + "runtime_id": -245, + "component_based": false, + "version": 2 + }, + "minecraft:item.wheat": { + "runtime_id": 59, + "component_based": false, + "version": 2 + }, + "minecraft:item.wooden_door": { + "runtime_id": 64, + "component_based": false, + "version": 2 + }, + "minecraft:jigsaw": { + "runtime_id": -211, + "component_based": false, + "version": 2 + }, + "minecraft:jukebox": { + "runtime_id": 84, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_boat": { + "runtime_id": 403, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_button": { + "runtime_id": -143, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_chest_boat": { + "runtime_id": 678, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_door": { + "runtime_id": 588, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_double_slab": { + "runtime_id": -811, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_fence": { + "runtime_id": -578, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_fence_gate": { + "runtime_id": 185, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_hanging_sign": { + "runtime_id": -503, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_leaves": { + "runtime_id": -802, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_log": { + "runtime_id": -571, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_planks": { + "runtime_id": -741, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_pressure_plate": { + "runtime_id": -153, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_sapling": { + "runtime_id": -827, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_sign": { + "runtime_id": 611, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_slab": { + "runtime_id": -806, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_stairs": { + "runtime_id": 136, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_standing_sign": { + "runtime_id": -188, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_trapdoor": { + "runtime_id": -148, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_wall_sign": { + "runtime_id": -189, + "component_based": false, + "version": 2 + }, + "minecraft:jungle_wood": { + "runtime_id": -816, + "component_based": false, + "version": 2 + }, + "minecraft:kelp": { + "runtime_id": 408, + "component_based": true, + "version": 2 + }, + "minecraft:lab_table": { + "runtime_id": -988, + "component_based": false, + "version": 2 + }, + "minecraft:ladder": { + "runtime_id": 65, + "component_based": false, + "version": 2 + }, + "minecraft:lantern": { + "runtime_id": -208, + "component_based": false, + "version": 2 + }, + "minecraft:lapis_block": { + "runtime_id": 22, + "component_based": false, + "version": 2 + }, + "minecraft:lapis_lazuli": { + "runtime_id": 440, + "component_based": false, + "version": 2 + }, + "minecraft:lapis_ore": { + "runtime_id": 21, + "component_based": false, + "version": 2 + }, + "minecraft:large_amethyst_bud": { + "runtime_id": -330, + "component_based": false, + "version": 2 + }, + "minecraft:large_fern": { + "runtime_id": -865, + "component_based": false, + "version": 2 + }, + "minecraft:lava": { + "runtime_id": 11, + "component_based": false, + "version": 2 + }, + "minecraft:lava_bucket": { + "runtime_id": 388, + "component_based": false, + "version": 2 + }, + "minecraft:lead": { + "runtime_id": 580, + "component_based": false, + "version": 2 + }, + "minecraft:leather": { + "runtime_id": 407, + "component_based": false, + "version": 2 + }, + "minecraft:leather_boots": { + "runtime_id": 363, + "component_based": false, + "version": 2 + }, + "minecraft:leather_chestplate": { + "runtime_id": 361, + "component_based": false, + "version": 2 + }, + "minecraft:leather_helmet": { + "runtime_id": 360, + "component_based": false, + "version": 2 + }, + "minecraft:leather_horse_armor": { + "runtime_id": 563, + "component_based": false, + "version": 2 + }, + "minecraft:leather_leggings": { + "runtime_id": 362, + "component_based": false, + "version": 2 + }, + "minecraft:leaves": { + "runtime_id": 767, + "component_based": false, + "version": 2 + }, + "minecraft:leaves2": { + "runtime_id": 768, + "component_based": false, + "version": 2 + }, + "minecraft:lectern": { + "runtime_id": -194, + "component_based": false, + "version": 2 + }, + "minecraft:lever": { + "runtime_id": 69, + "component_based": false, + "version": 2 + }, + "minecraft:light_block": { + "runtime_id": 791, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_0": { + "runtime_id": -215, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_1": { + "runtime_id": -929, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_10": { + "runtime_id": -938, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_11": { + "runtime_id": -939, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_12": { + "runtime_id": -940, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_13": { + "runtime_id": -941, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_14": { + "runtime_id": -942, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_15": { + "runtime_id": -943, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_2": { + "runtime_id": -930, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_3": { + "runtime_id": -931, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_4": { + "runtime_id": -932, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_5": { + "runtime_id": -933, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_6": { + "runtime_id": -934, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_7": { + "runtime_id": -935, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_8": { + "runtime_id": -936, + "component_based": false, + "version": 2 + }, + "minecraft:light_block_9": { + "runtime_id": -937, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_bundle": { + "runtime_id": 272, + "component_based": true, + "version": 1 + }, + "minecraft:light_blue_candle": { + "runtime_id": -416, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_candle_cake": { + "runtime_id": -433, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_carpet": { + "runtime_id": -599, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_concrete": { + "runtime_id": -630, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_concrete_powder": { + "runtime_id": -711, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_dye": { + "runtime_id": 433, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_glazed_terracotta": { + "runtime_id": 223, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_shulker_box": { + "runtime_id": -615, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_stained_glass": { + "runtime_id": -675, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_stained_glass_pane": { + "runtime_id": -645, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_terracotta": { + "runtime_id": -726, + "component_based": false, + "version": 2 + }, + "minecraft:light_blue_wool": { + "runtime_id": -562, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_bundle": { + "runtime_id": 273, + "component_based": true, + "version": 1 + }, + "minecraft:light_gray_candle": { + "runtime_id": -421, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_candle_cake": { + "runtime_id": -438, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_carpet": { + "runtime_id": -604, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_concrete": { + "runtime_id": -635, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_concrete_powder": { + "runtime_id": -716, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_dye": { + "runtime_id": 428, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_shulker_box": { + "runtime_id": -620, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_stained_glass": { + "runtime_id": -680, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_stained_glass_pane": { + "runtime_id": -650, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_terracotta": { + "runtime_id": -731, + "component_based": false, + "version": 2 + }, + "minecraft:light_gray_wool": { + "runtime_id": -552, + "component_based": false, + "version": 2 + }, + "minecraft:light_weighted_pressure_plate": { + "runtime_id": 147, + "component_based": false, + "version": 2 + }, + "minecraft:lightning_rod": { + "runtime_id": -312, + "component_based": false, + "version": 2 + }, + "minecraft:lilac": { + "runtime_id": -863, + "component_based": false, + "version": 2 + }, + "minecraft:lily_of_the_valley": { + "runtime_id": -839, + "component_based": false, + "version": 2 + }, + "minecraft:lime_bundle": { + "runtime_id": 268, + "component_based": true, + "version": 1 + }, + "minecraft:lime_candle": { + "runtime_id": -418, + "component_based": false, + "version": 2 + }, + "minecraft:lime_candle_cake": { + "runtime_id": -435, + "component_based": false, + "version": 2 + }, + "minecraft:lime_carpet": { + "runtime_id": -601, + "component_based": false, + "version": 2 + }, + "minecraft:lime_concrete": { + "runtime_id": -632, + "component_based": false, + "version": 2 + }, + "minecraft:lime_concrete_powder": { + "runtime_id": -713, + "component_based": false, + "version": 2 + }, + "minecraft:lime_dye": { + "runtime_id": 431, + "component_based": false, + "version": 2 + }, + "minecraft:lime_glazed_terracotta": { + "runtime_id": 225, + "component_based": false, + "version": 2 + }, + "minecraft:lime_shulker_box": { + "runtime_id": -617, + "component_based": false, + "version": 2 + }, + "minecraft:lime_stained_glass": { + "runtime_id": -677, + "component_based": false, + "version": 2 + }, + "minecraft:lime_stained_glass_pane": { + "runtime_id": -647, + "component_based": false, + "version": 2 + }, + "minecraft:lime_terracotta": { + "runtime_id": -728, + "component_based": false, + "version": 2 + }, + "minecraft:lime_wool": { + "runtime_id": -559, + "component_based": false, + "version": 2 + }, + "minecraft:lingering_potion": { + "runtime_id": 595, + "component_based": false, + "version": 2 + }, + "minecraft:lit_blast_furnace": { + "runtime_id": -214, + "component_based": false, + "version": 2 + }, + "minecraft:lit_deepslate_redstone_ore": { + "runtime_id": -404, + "component_based": false, + "version": 2 + }, + "minecraft:lit_furnace": { + "runtime_id": 62, + "component_based": false, + "version": 2 + }, + "minecraft:lit_pumpkin": { + "runtime_id": 91, + "component_based": false, + "version": 2 + }, + "minecraft:lit_redstone_lamp": { + "runtime_id": 124, + "component_based": false, + "version": 2 + }, + "minecraft:lit_redstone_ore": { + "runtime_id": 74, + "component_based": false, + "version": 2 + }, + "minecraft:lit_smoker": { + "runtime_id": -199, + "component_based": false, + "version": 2 + }, + "minecraft:llama_spawn_egg": { + "runtime_id": 501, + "component_based": false, + "version": 2 + }, + "minecraft:lodestone": { + "runtime_id": -222, + "component_based": false, + "version": 2 + }, + "minecraft:lodestone_compass": { + "runtime_id": 640, + "component_based": false, + "version": 2 + }, + "minecraft:log": { + "runtime_id": 752, + "component_based": false, + "version": 2 + }, + "minecraft:log2": { + "runtime_id": 775, + "component_based": false, + "version": 2 + }, + "minecraft:loom": { + "runtime_id": -204, + "component_based": false, + "version": 2 + }, + "minecraft:mace": { + "runtime_id": 344, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_bundle": { + "runtime_id": 261, + "component_based": true, + "version": 1 + }, + "minecraft:magenta_candle": { + "runtime_id": -415, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_candle_cake": { + "runtime_id": -432, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_carpet": { + "runtime_id": -598, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_concrete": { + "runtime_id": -629, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_concrete_powder": { + "runtime_id": -710, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_dye": { + "runtime_id": 434, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_glazed_terracotta": { + "runtime_id": 222, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_shulker_box": { + "runtime_id": -614, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_stained_glass": { + "runtime_id": -674, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_stained_glass_pane": { + "runtime_id": -644, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_terracotta": { + "runtime_id": -725, + "component_based": false, + "version": 2 + }, + "minecraft:magenta_wool": { + "runtime_id": -565, + "component_based": false, + "version": 2 + }, + "minecraft:magma": { + "runtime_id": 213, + "component_based": false, + "version": 2 + }, + "minecraft:magma_cream": { + "runtime_id": 457, + "component_based": false, + "version": 2 + }, + "minecraft:magma_cube_spawn_egg": { + "runtime_id": 482, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_boat": { + "runtime_id": 673, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_button": { + "runtime_id": -487, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_chest_boat": { + "runtime_id": 682, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_door": { + "runtime_id": 671, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_double_slab": { + "runtime_id": -499, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_fence": { + "runtime_id": -491, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_fence_gate": { + "runtime_id": -492, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_hanging_sign": { + "runtime_id": -508, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_leaves": { + "runtime_id": -472, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_log": { + "runtime_id": -484, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_planks": { + "runtime_id": -486, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_pressure_plate": { + "runtime_id": -490, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_propagule": { + "runtime_id": -474, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_roots": { + "runtime_id": -482, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_sign": { + "runtime_id": 672, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_slab": { + "runtime_id": -489, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_stairs": { + "runtime_id": -488, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_standing_sign": { + "runtime_id": -494, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_trapdoor": { + "runtime_id": -496, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_wall_sign": { + "runtime_id": -495, + "component_based": false, + "version": 2 + }, + "minecraft:mangrove_wood": { + "runtime_id": -497, + "component_based": false, + "version": 2 + }, + "minecraft:material_reducer": { + "runtime_id": -986, + "component_based": false, + "version": 2 + }, + "minecraft:medicine": { + "runtime_id": 637, + "component_based": false, + "version": 2 + }, + "minecraft:medium_amethyst_bud": { + "runtime_id": -331, + "component_based": false, + "version": 2 + }, + "minecraft:melon_block": { + "runtime_id": 103, + "component_based": false, + "version": 2 + }, + "minecraft:melon_seeds": { + "runtime_id": 315, + "component_based": false, + "version": 0 + }, + "minecraft:melon_slice": { + "runtime_id": 294, + "component_based": false, + "version": 0 + }, + "minecraft:melon_stem": { + "runtime_id": 105, + "component_based": false, + "version": 2 + }, + "minecraft:milk_bucket": { + "runtime_id": 386, + "component_based": false, + "version": 2 + }, + "minecraft:minecart": { + "runtime_id": 395, + "component_based": false, + "version": 2 + }, + "minecraft:miner_pottery_sherd": { + "runtime_id": 708, + "component_based": false, + "version": 2 + }, + "minecraft:mob_spawner": { + "runtime_id": 52, + "component_based": false, + "version": 2 + }, + "minecraft:mojang_banner_pattern": { + "runtime_id": 617, + "component_based": false, + "version": 2 + }, + "minecraft:monster_egg": { + "runtime_id": 776, + "component_based": false, + "version": 2 + }, + "minecraft:mooshroom_spawn_egg": { + "runtime_id": 467, + "component_based": false, + "version": 2 + }, + "minecraft:moss_block": { + "runtime_id": -320, + "component_based": false, + "version": 2 + }, + "minecraft:moss_carpet": { + "runtime_id": -335, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_cobblestone": { + "runtime_id": 48, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_cobblestone_double_slab": { + "runtime_id": -915, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_cobblestone_slab": { + "runtime_id": -888, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_cobblestone_stairs": { + "runtime_id": -179, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_cobblestone_wall": { + "runtime_id": -971, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_stone_brick_double_slab": { + "runtime_id": -168, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_stone_brick_slab": { + "runtime_id": -166, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_stone_brick_stairs": { + "runtime_id": -175, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_stone_brick_wall": { + "runtime_id": -978, + "component_based": false, + "version": 2 + }, + "minecraft:mossy_stone_bricks": { + "runtime_id": -868, + "component_based": false, + "version": 2 + }, + "minecraft:mourner_pottery_sherd": { + "runtime_id": 709, + "component_based": false, + "version": 2 + }, + "minecraft:moving_block": { + "runtime_id": 250, + "component_based": false, + "version": 2 + }, + "minecraft:mud": { + "runtime_id": -473, + "component_based": false, + "version": 2 + }, + "minecraft:mud_brick_double_slab": { + "runtime_id": -479, + "component_based": false, + "version": 2 + }, + "minecraft:mud_brick_slab": { + "runtime_id": -478, + "component_based": false, + "version": 2 + }, + "minecraft:mud_brick_stairs": { + "runtime_id": -480, + "component_based": false, + "version": 2 + }, + "minecraft:mud_brick_wall": { + "runtime_id": -481, + "component_based": false, + "version": 2 + }, + "minecraft:mud_bricks": { + "runtime_id": -475, + "component_based": false, + "version": 2 + }, + "minecraft:muddy_mangrove_roots": { + "runtime_id": -483, + "component_based": false, + "version": 2 + }, + "minecraft:mule_spawn_egg": { + "runtime_id": 494, + "component_based": false, + "version": 2 + }, + "minecraft:mushroom_stem": { + "runtime_id": -1008, + "component_based": false, + "version": 2 + }, + "minecraft:mushroom_stew": { + "runtime_id": 282, + "component_based": false, + "version": 0 + }, + "minecraft:music_disc_11": { + "runtime_id": 577, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_13": { + "runtime_id": 567, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_5": { + "runtime_id": 674, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_blocks": { + "runtime_id": 569, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_cat": { + "runtime_id": 568, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_chirp": { + "runtime_id": 570, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_creator": { + "runtime_id": 783, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_creator_music_box": { + "runtime_id": 784, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_far": { + "runtime_id": 571, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_mall": { + "runtime_id": 572, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_mellohi": { + "runtime_id": 573, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_otherside": { + "runtime_id": 664, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_pigstep": { + "runtime_id": 658, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_precipice": { + "runtime_id": 785, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_relic": { + "runtime_id": 737, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_stal": { + "runtime_id": 574, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_strad": { + "runtime_id": 575, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_wait": { + "runtime_id": 578, + "component_based": true, + "version": 2 + }, + "minecraft:music_disc_ward": { + "runtime_id": 576, + "component_based": true, + "version": 2 + }, + "minecraft:mutton": { + "runtime_id": 583, + "component_based": false, + "version": 0 + }, + "minecraft:mycelium": { + "runtime_id": 110, + "component_based": false, + "version": 2 + }, + "minecraft:name_tag": { + "runtime_id": 581, + "component_based": false, + "version": 2 + }, + "minecraft:nautilus_shell": { + "runtime_id": 603, + "component_based": false, + "version": 2 + }, + "minecraft:nether_brick": { + "runtime_id": 112, + "component_based": false, + "version": 2 + }, + "minecraft:nether_brick_double_slab": { + "runtime_id": -883, + "component_based": false, + "version": 2 + }, + "minecraft:nether_brick_fence": { + "runtime_id": 113, + "component_based": false, + "version": 2 + }, + "minecraft:nether_brick_slab": { + "runtime_id": -877, + "component_based": false, + "version": 2 + }, + "minecraft:nether_brick_stairs": { + "runtime_id": 114, + "component_based": false, + "version": 2 + }, + "minecraft:nether_brick_wall": { + "runtime_id": -979, + "component_based": false, + "version": 2 + }, + "minecraft:nether_gold_ore": { + "runtime_id": -288, + "component_based": false, + "version": 2 + }, + "minecraft:nether_sprouts": { + "runtime_id": 659, + "component_based": true, + "version": 2 + }, + "minecraft:nether_star": { + "runtime_id": 551, + "component_based": false, + "version": 2 + }, + "minecraft:nether_wart": { + "runtime_id": 316, + "component_based": false, + "version": 0 + }, + "minecraft:nether_wart_block": { + "runtime_id": 214, + "component_based": false, + "version": 2 + }, + "minecraft:netherbrick": { + "runtime_id": 556, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_axe": { + "runtime_id": 644, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_block": { + "runtime_id": -270, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_boots": { + "runtime_id": 650, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_chestplate": { + "runtime_id": 648, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_helmet": { + "runtime_id": 647, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_hoe": { + "runtime_id": 645, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_ingot": { + "runtime_id": 646, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_leggings": { + "runtime_id": 649, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_pickaxe": { + "runtime_id": 643, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_scrap": { + "runtime_id": 651, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_shovel": { + "runtime_id": 642, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_sword": { + "runtime_id": 641, + "component_based": false, + "version": 2 + }, + "minecraft:netherite_upgrade_smithing_template": { + "runtime_id": 718, + "component_based": false, + "version": 2 + }, + "minecraft:netherrack": { + "runtime_id": 87, + "component_based": false, + "version": 2 + }, + "minecraft:netherreactor": { + "runtime_id": 247, + "component_based": false, + "version": 2 + }, + "minecraft:normal_stone_double_slab": { + "runtime_id": -926, + "component_based": false, + "version": 2 + }, + "minecraft:normal_stone_slab": { + "runtime_id": -899, + "component_based": false, + "version": 2 + }, + "minecraft:normal_stone_stairs": { + "runtime_id": -180, + "component_based": false, + "version": 2 + }, + "minecraft:noteblock": { + "runtime_id": 25, + "component_based": false, + "version": 2 + }, + "minecraft:npc_spawn_egg": { + "runtime_id": 498, + "component_based": false, + "version": 2 + }, + "minecraft:oak_boat": { + "runtime_id": 401, + "component_based": false, + "version": 2 + }, + "minecraft:oak_chest_boat": { + "runtime_id": 676, + "component_based": false, + "version": 2 + }, + "minecraft:oak_double_slab": { + "runtime_id": 157, + "component_based": false, + "version": 2 + }, + "minecraft:oak_fence": { + "runtime_id": 85, + "component_based": false, + "version": 2 + }, + "minecraft:oak_hanging_sign": { + "runtime_id": -500, + "component_based": false, + "version": 2 + }, + "minecraft:oak_leaves": { + "runtime_id": 18, + "component_based": false, + "version": 2 + }, + "minecraft:oak_log": { + "runtime_id": 17, + "component_based": false, + "version": 2 + }, + "minecraft:oak_planks": { + "runtime_id": 5, + "component_based": false, + "version": 2 + }, + "minecraft:oak_sapling": { + "runtime_id": 6, + "component_based": false, + "version": 2 + }, + "minecraft:oak_sign": { + "runtime_id": 383, + "component_based": false, + "version": 2 + }, + "minecraft:oak_slab": { + "runtime_id": 158, + "component_based": false, + "version": 2 + }, + "minecraft:oak_stairs": { + "runtime_id": 53, + "component_based": false, + "version": 2 + }, + "minecraft:oak_wood": { + "runtime_id": -212, + "component_based": false, + "version": 2 + }, + "minecraft:observer": { + "runtime_id": 251, + "component_based": false, + "version": 2 + }, + "minecraft:obsidian": { + "runtime_id": 49, + "component_based": false, + "version": 2 + }, + "minecraft:ocelot_spawn_egg": { + "runtime_id": 478, + "component_based": false, + "version": 2 + }, + "minecraft:ochre_froglight": { + "runtime_id": -471, + "component_based": false, + "version": 2 + }, + "minecraft:ominous_bottle": { + "runtime_id": 629, + "component_based": false, + "version": 2 + }, + "minecraft:ominous_trial_key": { + "runtime_id": 276, + "component_based": true, + "version": 1 + }, + "minecraft:open_eyeblossom": { + "runtime_id": -1018, + "component_based": false, + "version": 2 + }, + "minecraft:orange_bundle": { + "runtime_id": 267, + "component_based": true, + "version": 1 + }, + "minecraft:orange_candle": { + "runtime_id": -414, + "component_based": false, + "version": 2 + }, + "minecraft:orange_candle_cake": { + "runtime_id": -431, + "component_based": false, + "version": 2 + }, + "minecraft:orange_carpet": { + "runtime_id": -597, + "component_based": false, + "version": 2 + }, + "minecraft:orange_concrete": { + "runtime_id": -628, + "component_based": false, + "version": 2 + }, + "minecraft:orange_concrete_powder": { + "runtime_id": -709, + "component_based": false, + "version": 2 + }, + "minecraft:orange_dye": { + "runtime_id": 435, + "component_based": false, + "version": 2 + }, + "minecraft:orange_glazed_terracotta": { + "runtime_id": 221, + "component_based": false, + "version": 2 + }, + "minecraft:orange_shulker_box": { + "runtime_id": -613, + "component_based": false, + "version": 2 + }, + "minecraft:orange_stained_glass": { + "runtime_id": -673, + "component_based": false, + "version": 2 + }, + "minecraft:orange_stained_glass_pane": { + "runtime_id": -643, + "component_based": false, + "version": 2 + }, + "minecraft:orange_terracotta": { + "runtime_id": -724, + "component_based": false, + "version": 2 + }, + "minecraft:orange_tulip": { + "runtime_id": -834, + "component_based": false, + "version": 2 + }, + "minecraft:orange_wool": { + "runtime_id": -557, + "component_based": false, + "version": 2 + }, + "minecraft:oxeye_daisy": { + "runtime_id": -837, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_chiseled_copper": { + "runtime_id": -763, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_copper": { + "runtime_id": -343, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_copper_bulb": { + "runtime_id": -779, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_copper_door": { + "runtime_id": -787, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_copper_grate": { + "runtime_id": -771, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_copper_trapdoor": { + "runtime_id": -795, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_cut_copper": { + "runtime_id": -350, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_cut_copper_slab": { + "runtime_id": -364, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_cut_copper_stairs": { + "runtime_id": -357, + "component_based": false, + "version": 2 + }, + "minecraft:oxidized_double_cut_copper_slab": { + "runtime_id": -371, + "component_based": false, + "version": 2 + }, + "minecraft:packed_ice": { + "runtime_id": 174, + "component_based": false, + "version": 2 + }, + "minecraft:packed_mud": { + "runtime_id": -477, + "component_based": false, + "version": 2 + }, + "minecraft:painting": { + "runtime_id": 382, + "component_based": false, + "version": 2 + }, + "minecraft:pale_hanging_moss": { + "runtime_id": -1011, + "component_based": false, + "version": 2 + }, + "minecraft:pale_moss_block": { + "runtime_id": -1009, + "component_based": false, + "version": 2 + }, + "minecraft:pale_moss_carpet": { + "runtime_id": -1010, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_boat": { + "runtime_id": 745, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_button": { + "runtime_id": -989, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_chest_boat": { + "runtime_id": 746, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_door": { + "runtime_id": -990, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_double_slab": { + "runtime_id": -999, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_fence": { + "runtime_id": -991, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_fence_gate": { + "runtime_id": -992, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_hanging_sign": { + "runtime_id": -993, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_leaves": { + "runtime_id": -1007, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_log": { + "runtime_id": -995, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_planks": { + "runtime_id": -996, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_pressure_plate": { + "runtime_id": -997, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_sapling": { + "runtime_id": -1006, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_sign": { + "runtime_id": 747, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_slab": { + "runtime_id": -998, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_stairs": { + "runtime_id": -1000, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_standing_sign": { + "runtime_id": -1001, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_trapdoor": { + "runtime_id": -1002, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_wall_sign": { + "runtime_id": -1003, + "component_based": false, + "version": 2 + }, + "minecraft:pale_oak_wood": { + "runtime_id": -1005, + "component_based": false, + "version": 2 + }, + "minecraft:panda_spawn_egg": { + "runtime_id": 517, + "component_based": false, + "version": 2 + }, + "minecraft:paper": { + "runtime_id": 412, + "component_based": false, + "version": 2 + }, + "minecraft:parrot_spawn_egg": { + "runtime_id": 506, + "component_based": false, + "version": 2 + }, + "minecraft:pearlescent_froglight": { + "runtime_id": -469, + "component_based": false, + "version": 2 + }, + "minecraft:peony": { + "runtime_id": -867, + "component_based": false, + "version": 2 + }, + "minecraft:petrified_oak_double_slab": { + "runtime_id": -903, + "component_based": false, + "version": 2 + }, + "minecraft:petrified_oak_slab": { + "runtime_id": -902, + "component_based": false, + "version": 2 + }, + "minecraft:phantom_membrane": { + "runtime_id": 607, + "component_based": false, + "version": 2 + }, + "minecraft:phantom_spawn_egg": { + "runtime_id": 514, + "component_based": false, + "version": 2 + }, + "minecraft:pig_spawn_egg": { + "runtime_id": 464, + "component_based": false, + "version": 2 + }, + "minecraft:piglin_banner_pattern": { + "runtime_id": 620, + "component_based": false, + "version": 2 + }, + "minecraft:piglin_brute_spawn_egg": { + "runtime_id": 527, + "component_based": false, + "version": 2 + }, + "minecraft:piglin_head": { + "runtime_id": -970, + "component_based": false, + "version": 2 + }, + "minecraft:piglin_spawn_egg": { + "runtime_id": 525, + "component_based": false, + "version": 2 + }, + "minecraft:pillager_spawn_egg": { + "runtime_id": 519, + "component_based": false, + "version": 2 + }, + "minecraft:pink_bundle": { + "runtime_id": 270, + "component_based": true, + "version": 1 + }, + "minecraft:pink_candle": { + "runtime_id": -419, + "component_based": false, + "version": 2 + }, + "minecraft:pink_candle_cake": { + "runtime_id": -436, + "component_based": false, + "version": 2 + }, + "minecraft:pink_carpet": { + "runtime_id": -602, + "component_based": false, + "version": 2 + }, + "minecraft:pink_concrete": { + "runtime_id": -633, + "component_based": false, + "version": 2 + }, + "minecraft:pink_concrete_powder": { + "runtime_id": -714, + "component_based": false, + "version": 2 + }, + "minecraft:pink_dye": { + "runtime_id": 430, + "component_based": false, + "version": 2 + }, + "minecraft:pink_glazed_terracotta": { + "runtime_id": 226, + "component_based": false, + "version": 2 + }, + "minecraft:pink_petals": { + "runtime_id": -549, + "component_based": false, + "version": 2 + }, + "minecraft:pink_shulker_box": { + "runtime_id": -618, + "component_based": false, + "version": 2 + }, + "minecraft:pink_stained_glass": { + "runtime_id": -678, + "component_based": false, + "version": 2 + }, + "minecraft:pink_stained_glass_pane": { + "runtime_id": -648, + "component_based": false, + "version": 2 + }, + "minecraft:pink_terracotta": { + "runtime_id": -729, + "component_based": false, + "version": 2 + }, + "minecraft:pink_tulip": { + "runtime_id": -836, + "component_based": false, + "version": 2 + }, + "minecraft:pink_wool": { + "runtime_id": -566, + "component_based": false, + "version": 2 + }, + "minecraft:piston": { + "runtime_id": 33, + "component_based": false, + "version": 2 + }, + "minecraft:piston_arm_collision": { + "runtime_id": 34, + "component_based": false, + "version": 2 + }, + "minecraft:pitcher_crop": { + "runtime_id": -574, + "component_based": false, + "version": 2 + }, + "minecraft:pitcher_plant": { + "runtime_id": -612, + "component_based": false, + "version": 2 + }, + "minecraft:pitcher_pod": { + "runtime_id": 319, + "component_based": false, + "version": 0 + }, + "minecraft:planks": { + "runtime_id": 772, + "component_based": false, + "version": 2 + }, + "minecraft:player_head": { + "runtime_id": -967, + "component_based": false, + "version": 2 + }, + "minecraft:plenty_pottery_sherd": { + "runtime_id": 710, + "component_based": false, + "version": 2 + }, + "minecraft:podzol": { + "runtime_id": 243, + "component_based": false, + "version": 2 + }, + "minecraft:pointed_dripstone": { + "runtime_id": -308, + "component_based": false, + "version": 2 + }, + "minecraft:poisonous_potato": { + "runtime_id": 304, + "component_based": false, + "version": 0 + }, + "minecraft:polar_bear_spawn_egg": { + "runtime_id": 500, + "component_based": false, + "version": 2 + }, + "minecraft:polished_andesite": { + "runtime_id": -595, + "component_based": false, + "version": 2 + }, + "minecraft:polished_andesite_double_slab": { + "runtime_id": -919, + "component_based": false, + "version": 2 + }, + "minecraft:polished_andesite_slab": { + "runtime_id": -892, + "component_based": false, + "version": 2 + }, + "minecraft:polished_andesite_stairs": { + "runtime_id": -174, + "component_based": false, + "version": 2 + }, + "minecraft:polished_basalt": { + "runtime_id": -235, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone": { + "runtime_id": -291, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_brick_double_slab": { + "runtime_id": -285, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_brick_slab": { + "runtime_id": -284, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_brick_stairs": { + "runtime_id": -275, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_brick_wall": { + "runtime_id": -278, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_bricks": { + "runtime_id": -274, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_button": { + "runtime_id": -296, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_double_slab": { + "runtime_id": -294, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_pressure_plate": { + "runtime_id": -295, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_slab": { + "runtime_id": -293, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_stairs": { + "runtime_id": -292, + "component_based": false, + "version": 2 + }, + "minecraft:polished_blackstone_wall": { + "runtime_id": -297, + "component_based": false, + "version": 2 + }, + "minecraft:polished_deepslate": { + "runtime_id": -383, + "component_based": false, + "version": 2 + }, + "minecraft:polished_deepslate_double_slab": { + "runtime_id": -397, + "component_based": false, + "version": 2 + }, + "minecraft:polished_deepslate_slab": { + "runtime_id": -384, + "component_based": false, + "version": 2 + }, + "minecraft:polished_deepslate_stairs": { + "runtime_id": -385, + "component_based": false, + "version": 2 + }, + "minecraft:polished_deepslate_wall": { + "runtime_id": -386, + "component_based": false, + "version": 2 + }, + "minecraft:polished_diorite": { + "runtime_id": -593, + "component_based": false, + "version": 2 + }, + "minecraft:polished_diorite_double_slab": { + "runtime_id": -922, + "component_based": false, + "version": 2 + }, + "minecraft:polished_diorite_slab": { + "runtime_id": -895, + "component_based": false, + "version": 2 + }, + "minecraft:polished_diorite_stairs": { + "runtime_id": -173, + "component_based": false, + "version": 2 + }, + "minecraft:polished_granite": { + "runtime_id": -591, + "component_based": false, + "version": 2 + }, + "minecraft:polished_granite_double_slab": { + "runtime_id": -924, + "component_based": false, + "version": 2 + }, + "minecraft:polished_granite_slab": { + "runtime_id": -897, + "component_based": false, + "version": 2 + }, + "minecraft:polished_granite_stairs": { + "runtime_id": -172, + "component_based": false, + "version": 2 + }, + "minecraft:polished_tuff": { + "runtime_id": -748, + "component_based": false, + "version": 2 + }, + "minecraft:polished_tuff_double_slab": { + "runtime_id": -750, + "component_based": false, + "version": 2 + }, + "minecraft:polished_tuff_slab": { + "runtime_id": -749, + "component_based": false, + "version": 2 + }, + "minecraft:polished_tuff_stairs": { + "runtime_id": -751, + "component_based": false, + "version": 2 + }, + "minecraft:polished_tuff_wall": { + "runtime_id": -752, + "component_based": false, + "version": 2 + }, + "minecraft:popped_chorus_fruit": { + "runtime_id": 592, + "component_based": false, + "version": 2 + }, + "minecraft:poppy": { + "runtime_id": 38, + "component_based": false, + "version": 2 + }, + "minecraft:porkchop": { + "runtime_id": 284, + "component_based": false, + "version": 0 + }, + "minecraft:portal": { + "runtime_id": 90, + "component_based": false, + "version": 2 + }, + "minecraft:potato": { + "runtime_id": 302, + "component_based": false, + "version": 0 + }, + "minecraft:potatoes": { + "runtime_id": 142, + "component_based": false, + "version": 2 + }, + "minecraft:potion": { + "runtime_id": 453, + "component_based": false, + "version": 2 + }, + "minecraft:powder_snow": { + "runtime_id": -306, + "component_based": false, + "version": 2 + }, + "minecraft:powder_snow_bucket": { + "runtime_id": 393, + "component_based": false, + "version": 2 + }, + "minecraft:powered_comparator": { + "runtime_id": 150, + "component_based": false, + "version": 2 + }, + "minecraft:powered_repeater": { + "runtime_id": 94, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine": { + "runtime_id": 168, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_brick_double_slab": { + "runtime_id": -914, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_brick_slab": { + "runtime_id": -887, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_bricks": { + "runtime_id": -948, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_bricks_stairs": { + "runtime_id": -4, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_crystals": { + "runtime_id": 582, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_double_slab": { + "runtime_id": -912, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_shard": { + "runtime_id": 598, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_slab": { + "runtime_id": -885, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_stairs": { + "runtime_id": -2, + "component_based": false, + "version": 2 + }, + "minecraft:prismarine_wall": { + "runtime_id": -981, + "component_based": false, + "version": 2 + }, + "minecraft:prize_pottery_sherd": { + "runtime_id": 711, + "component_based": false, + "version": 2 + }, + "minecraft:pufferfish": { + "runtime_id": 289, + "component_based": false, + "version": 0 + }, + "minecraft:pufferfish_bucket": { + "runtime_id": 392, + "component_based": false, + "version": 2 + }, + "minecraft:pufferfish_spawn_egg": { + "runtime_id": 509, + "component_based": false, + "version": 2 + }, + "minecraft:pumpkin": { + "runtime_id": 86, + "component_based": false, + "version": 2 + }, + "minecraft:pumpkin_pie": { + "runtime_id": 306, + "component_based": false, + "version": 0 + }, + "minecraft:pumpkin_seeds": { + "runtime_id": 314, + "component_based": false, + "version": 0 + }, + "minecraft:pumpkin_stem": { + "runtime_id": 104, + "component_based": false, + "version": 2 + }, + "minecraft:purple_bundle": { + "runtime_id": 260, + "component_based": true, + "version": 1 + }, + "minecraft:purple_candle": { + "runtime_id": -423, + "component_based": false, + "version": 2 + }, + "minecraft:purple_candle_cake": { + "runtime_id": -440, + "component_based": false, + "version": 2 + }, + "minecraft:purple_carpet": { + "runtime_id": -606, + "component_based": false, + "version": 2 + }, + "minecraft:purple_concrete": { + "runtime_id": -637, + "component_based": false, + "version": 2 + }, + "minecraft:purple_concrete_powder": { + "runtime_id": -718, + "component_based": false, + "version": 2 + }, + "minecraft:purple_dye": { + "runtime_id": 426, + "component_based": false, + "version": 2 + }, + "minecraft:purple_glazed_terracotta": { + "runtime_id": 219, + "component_based": false, + "version": 2 + }, + "minecraft:purple_shulker_box": { + "runtime_id": -622, + "component_based": false, + "version": 2 + }, + "minecraft:purple_stained_glass": { + "runtime_id": -682, + "component_based": false, + "version": 2 + }, + "minecraft:purple_stained_glass_pane": { + "runtime_id": -652, + "component_based": false, + "version": 2 + }, + "minecraft:purple_terracotta": { + "runtime_id": -733, + "component_based": false, + "version": 2 + }, + "minecraft:purple_wool": { + "runtime_id": -564, + "component_based": false, + "version": 2 + }, + "minecraft:purpur_block": { + "runtime_id": 201, + "component_based": false, + "version": 2 + }, + "minecraft:purpur_double_slab": { + "runtime_id": -911, + "component_based": false, + "version": 2 + }, + "minecraft:purpur_pillar": { + "runtime_id": -951, + "component_based": false, + "version": 2 + }, + "minecraft:purpur_slab": { + "runtime_id": -884, + "component_based": false, + "version": 2 + }, + "minecraft:purpur_stairs": { + "runtime_id": 203, + "component_based": false, + "version": 2 + }, + "minecraft:quartz": { + "runtime_id": 557, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_block": { + "runtime_id": 155, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_bricks": { + "runtime_id": -304, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_double_slab": { + "runtime_id": -882, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_ore": { + "runtime_id": 153, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_pillar": { + "runtime_id": -954, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_slab": { + "runtime_id": -876, + "component_based": false, + "version": 2 + }, + "minecraft:quartz_stairs": { + "runtime_id": 156, + "component_based": false, + "version": 2 + }, + "minecraft:rabbit": { + "runtime_id": 310, + "component_based": false, + "version": 0 + }, + "minecraft:rabbit_foot": { + "runtime_id": 561, + "component_based": false, + "version": 2 + }, + "minecraft:rabbit_hide": { + "runtime_id": 562, + "component_based": false, + "version": 2 + }, + "minecraft:rabbit_spawn_egg": { + "runtime_id": 486, + "component_based": false, + "version": 2 + }, + "minecraft:rabbit_stew": { + "runtime_id": 312, + "component_based": false, + "version": 0 + }, + "minecraft:rail": { + "runtime_id": 66, + "component_based": false, + "version": 2 + }, + "minecraft:raiser_armor_trim_smithing_template": { + "runtime_id": 732, + "component_based": false, + "version": 2 + }, + "minecraft:rapid_fertilizer": { + "runtime_id": 635, + "component_based": false, + "version": 2 + }, + "minecraft:ravager_spawn_egg": { + "runtime_id": 521, + "component_based": false, + "version": 2 + }, + "minecraft:raw_copper": { + "runtime_id": 541, + "component_based": false, + "version": 2 + }, + "minecraft:raw_copper_block": { + "runtime_id": -452, + "component_based": false, + "version": 2 + }, + "minecraft:raw_gold": { + "runtime_id": 540, + "component_based": false, + "version": 2 + }, + "minecraft:raw_gold_block": { + "runtime_id": -453, + "component_based": false, + "version": 2 + }, + "minecraft:raw_iron": { + "runtime_id": 539, + "component_based": false, + "version": 2 + }, + "minecraft:raw_iron_block": { + "runtime_id": -451, + "component_based": false, + "version": 2 + }, + "minecraft:recovery_compass": { + "runtime_id": 684, + "component_based": false, + "version": 2 + }, + "minecraft:red_bundle": { + "runtime_id": 265, + "component_based": true, + "version": 1 + }, + "minecraft:red_candle": { + "runtime_id": -427, + "component_based": false, + "version": 2 + }, + "minecraft:red_candle_cake": { + "runtime_id": -444, + "component_based": false, + "version": 2 + }, + "minecraft:red_carpet": { + "runtime_id": -610, + "component_based": false, + "version": 2 + }, + "minecraft:red_concrete": { + "runtime_id": -641, + "component_based": false, + "version": 2 + }, + "minecraft:red_concrete_powder": { + "runtime_id": -722, + "component_based": false, + "version": 2 + }, + "minecraft:red_dye": { + "runtime_id": 422, + "component_based": false, + "version": 2 + }, + "minecraft:red_flower": { + "runtime_id": 770, + "component_based": false, + "version": 2 + }, + "minecraft:red_glazed_terracotta": { + "runtime_id": 234, + "component_based": false, + "version": 2 + }, + "minecraft:red_mushroom": { + "runtime_id": 40, + "component_based": false, + "version": 2 + }, + "minecraft:red_mushroom_block": { + "runtime_id": 100, + "component_based": false, + "version": 2 + }, + "minecraft:red_nether_brick": { + "runtime_id": 215, + "component_based": false, + "version": 2 + }, + "minecraft:red_nether_brick_double_slab": { + "runtime_id": -917, + "component_based": false, + "version": 2 + }, + "minecraft:red_nether_brick_slab": { + "runtime_id": -890, + "component_based": false, + "version": 2 + }, + "minecraft:red_nether_brick_stairs": { + "runtime_id": -184, + "component_based": false, + "version": 2 + }, + "minecraft:red_nether_brick_wall": { + "runtime_id": -983, + "component_based": false, + "version": 2 + }, + "minecraft:red_sand": { + "runtime_id": -949, + "component_based": false, + "version": 2 + }, + "minecraft:red_sandstone": { + "runtime_id": 179, + "component_based": false, + "version": 2 + }, + "minecraft:red_sandstone_double_slab": { + "runtime_id": 181, + "component_based": false, + "version": 2 + }, + "minecraft:red_sandstone_slab": { + "runtime_id": 182, + "component_based": false, + "version": 2 + }, + "minecraft:red_sandstone_stairs": { + "runtime_id": 180, + "component_based": false, + "version": 2 + }, + "minecraft:red_sandstone_wall": { + "runtime_id": -982, + "component_based": false, + "version": 2 + }, + "minecraft:red_shulker_box": { + "runtime_id": -626, + "component_based": false, + "version": 2 + }, + "minecraft:red_stained_glass": { + "runtime_id": -686, + "component_based": false, + "version": 2 + }, + "minecraft:red_stained_glass_pane": { + "runtime_id": -656, + "component_based": false, + "version": 2 + }, + "minecraft:red_terracotta": { + "runtime_id": -737, + "component_based": false, + "version": 2 + }, + "minecraft:red_tulip": { + "runtime_id": -833, + "component_based": false, + "version": 2 + }, + "minecraft:red_wool": { + "runtime_id": -556, + "component_based": false, + "version": 2 + }, + "minecraft:redstone": { + "runtime_id": 398, + "component_based": false, + "version": 2 + }, + "minecraft:redstone_block": { + "runtime_id": 152, + "component_based": false, + "version": 2 + }, + "minecraft:redstone_lamp": { + "runtime_id": 123, + "component_based": false, + "version": 2 + }, + "minecraft:redstone_ore": { + "runtime_id": 73, + "component_based": false, + "version": 2 + }, + "minecraft:redstone_torch": { + "runtime_id": 76, + "component_based": false, + "version": 2 + }, + "minecraft:redstone_wire": { + "runtime_id": 55, + "component_based": false, + "version": 2 + }, + "minecraft:reinforced_deepslate": { + "runtime_id": -466, + "component_based": false, + "version": 2 + }, + "minecraft:repeater": { + "runtime_id": 445, + "component_based": true, + "version": 2 + }, + "minecraft:repeating_command_block": { + "runtime_id": 188, + "component_based": false, + "version": 2 + }, + "minecraft:reserved6": { + "runtime_id": 255, + "component_based": false, + "version": 2 + }, + "minecraft:resin_block": { + "runtime_id": -1021, + "component_based": false, + "version": 2 + }, + "minecraft:resin_brick": { + "runtime_id": 749, + "component_based": false, + "version": 2 + }, + "minecraft:resin_brick_double_slab": { + "runtime_id": -1015, + "component_based": false, + "version": 2 + }, + "minecraft:resin_brick_slab": { + "runtime_id": -1014, + "component_based": false, + "version": 2 + }, + "minecraft:resin_brick_stairs": { + "runtime_id": -1016, + "component_based": false, + "version": 2 + }, + "minecraft:resin_brick_wall": { + "runtime_id": -1017, + "component_based": false, + "version": 2 + }, + "minecraft:resin_bricks": { + "runtime_id": -1013, + "component_based": false, + "version": 2 + }, + "minecraft:resin_clump": { + "runtime_id": -1022, + "component_based": false, + "version": 2 + }, + "minecraft:respawn_anchor": { + "runtime_id": -272, + "component_based": false, + "version": 2 + }, + "minecraft:rib_armor_trim_smithing_template": { + "runtime_id": 728, + "component_based": false, + "version": 2 + }, + "minecraft:rose_bush": { + "runtime_id": -866, + "component_based": false, + "version": 2 + }, + "minecraft:rotten_flesh": { + "runtime_id": 299, + "component_based": false, + "version": 0 + }, + "minecraft:saddle": { + "runtime_id": 396, + "component_based": false, + "version": 2 + }, + "minecraft:salmon": { + "runtime_id": 287, + "component_based": false, + "version": 0 + }, + "minecraft:salmon_bucket": { + "runtime_id": 390, + "component_based": false, + "version": 2 + }, + "minecraft:salmon_spawn_egg": { + "runtime_id": 510, + "component_based": false, + "version": 2 + }, + "minecraft:sand": { + "runtime_id": 12, + "component_based": false, + "version": 2 + }, + "minecraft:sandstone": { + "runtime_id": 24, + "component_based": false, + "version": 2 + }, + "minecraft:sandstone_double_slab": { + "runtime_id": -878, + "component_based": false, + "version": 2 + }, + "minecraft:sandstone_slab": { + "runtime_id": -872, + "component_based": false, + "version": 2 + }, + "minecraft:sandstone_stairs": { + "runtime_id": 128, + "component_based": false, + "version": 2 + }, + "minecraft:sandstone_wall": { + "runtime_id": -975, + "component_based": false, + "version": 2 + }, + "minecraft:sapling": { + "runtime_id": 766, + "component_based": false, + "version": 2 + }, + "minecraft:scaffolding": { + "runtime_id": -165, + "component_based": false, + "version": 2 + }, + "minecraft:scrape_pottery_sherd": { + "runtime_id": 712, + "component_based": false, + "version": 2 + }, + "minecraft:sculk": { + "runtime_id": -458, + "component_based": false, + "version": 2 + }, + "minecraft:sculk_catalyst": { + "runtime_id": -460, + "component_based": false, + "version": 2 + }, + "minecraft:sculk_sensor": { + "runtime_id": -307, + "component_based": false, + "version": 2 + }, + "minecraft:sculk_shrieker": { + "runtime_id": -461, + "component_based": false, + "version": 2 + }, + "minecraft:sculk_vein": { + "runtime_id": -459, + "component_based": false, + "version": 2 + }, + "minecraft:sea_lantern": { + "runtime_id": 169, + "component_based": false, + "version": 2 + }, + "minecraft:sea_pickle": { + "runtime_id": -156, + "component_based": false, + "version": 2 + }, + "minecraft:seagrass": { + "runtime_id": -130, + "component_based": false, + "version": 2 + }, + "minecraft:sentry_armor_trim_smithing_template": { + "runtime_id": 719, + "component_based": false, + "version": 2 + }, + "minecraft:shaper_armor_trim_smithing_template": { + "runtime_id": 733, + "component_based": false, + "version": 2 + }, + "minecraft:sheaf_pottery_sherd": { + "runtime_id": 713, + "component_based": false, + "version": 2 + }, + "minecraft:shears": { + "runtime_id": 447, + "component_based": false, + "version": 2 + }, + "minecraft:sheep_spawn_egg": { + "runtime_id": 465, + "component_based": false, + "version": 2 + }, + "minecraft:shelter_pottery_sherd": { + "runtime_id": 714, + "component_based": false, + "version": 2 + }, + "minecraft:shield": { + "runtime_id": 380, + "component_based": false, + "version": 2 + }, + "minecraft:short_grass": { + "runtime_id": 31, + "component_based": false, + "version": 2 + }, + "minecraft:shroomlight": { + "runtime_id": -230, + "component_based": false, + "version": 2 + }, + "minecraft:shulker_box": { + "runtime_id": 781, + "component_based": false, + "version": 2 + }, + "minecraft:shulker_shell": { + "runtime_id": 599, + "component_based": false, + "version": 2 + }, + "minecraft:shulker_spawn_egg": { + "runtime_id": 497, + "component_based": false, + "version": 2 + }, + "minecraft:silence_armor_trim_smithing_template": { + "runtime_id": 730, + "component_based": false, + "version": 2 + }, + "minecraft:silver_glazed_terracotta": { + "runtime_id": 228, + "component_based": false, + "version": 2 + }, + "minecraft:silverfish_spawn_egg": { + "runtime_id": 470, + "component_based": false, + "version": 2 + }, + "minecraft:skeleton_horse_spawn_egg": { + "runtime_id": 495, + "component_based": false, + "version": 2 + }, + "minecraft:skeleton_skull": { + "runtime_id": 144, + "component_based": false, + "version": 2 + }, + "minecraft:skeleton_spawn_egg": { + "runtime_id": 471, + "component_based": false, + "version": 2 + }, + "minecraft:skull": { + "runtime_id": 738, + "component_based": false, + "version": 2 + }, + "minecraft:skull_banner_pattern": { + "runtime_id": 616, + "component_based": false, + "version": 2 + }, + "minecraft:skull_pottery_sherd": { + "runtime_id": 715, + "component_based": false, + "version": 2 + }, + "minecraft:slime": { + "runtime_id": 165, + "component_based": false, + "version": 2 + }, + "minecraft:slime_ball": { + "runtime_id": 414, + "component_based": false, + "version": 2 + }, + "minecraft:slime_spawn_egg": { + "runtime_id": 472, + "component_based": false, + "version": 2 + }, + "minecraft:small_amethyst_bud": { + "runtime_id": -332, + "component_based": false, + "version": 2 + }, + "minecraft:small_dripleaf_block": { + "runtime_id": -336, + "component_based": false, + "version": 2 + }, + "minecraft:smithing_table": { + "runtime_id": -202, + "component_based": false, + "version": 2 + }, + "minecraft:smoker": { + "runtime_id": -198, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_basalt": { + "runtime_id": -377, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_quartz": { + "runtime_id": -955, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_quartz_double_slab": { + "runtime_id": -925, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_quartz_slab": { + "runtime_id": -898, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_quartz_stairs": { + "runtime_id": -185, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_red_sandstone": { + "runtime_id": -958, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_red_sandstone_double_slab": { + "runtime_id": -918, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_red_sandstone_slab": { + "runtime_id": -891, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_red_sandstone_stairs": { + "runtime_id": -176, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_sandstone": { + "runtime_id": -946, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_sandstone_double_slab": { + "runtime_id": -916, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_sandstone_slab": { + "runtime_id": -889, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_sandstone_stairs": { + "runtime_id": -177, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_stone": { + "runtime_id": -183, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_stone_double_slab": { + "runtime_id": 43, + "component_based": false, + "version": 2 + }, + "minecraft:smooth_stone_slab": { + "runtime_id": 44, + "component_based": false, + "version": 2 + }, + "minecraft:sniffer_egg": { + "runtime_id": -596, + "component_based": false, + "version": 2 + }, + "minecraft:sniffer_spawn_egg": { + "runtime_id": 528, + "component_based": false, + "version": 2 + }, + "minecraft:snort_pottery_sherd": { + "runtime_id": 716, + "component_based": false, + "version": 2 + }, + "minecraft:snout_armor_trim_smithing_template": { + "runtime_id": 727, + "component_based": false, + "version": 2 + }, + "minecraft:snow": { + "runtime_id": 80, + "component_based": false, + "version": 2 + }, + "minecraft:snow_golem_spawn_egg": { + "runtime_id": 534, + "component_based": false, + "version": 2 + }, + "minecraft:snow_layer": { + "runtime_id": 78, + "component_based": false, + "version": 2 + }, + "minecraft:snowball": { + "runtime_id": 399, + "component_based": true, + "version": 2 + }, + "minecraft:soul_campfire": { + "runtime_id": 660, + "component_based": true, + "version": 2 + }, + "minecraft:soul_fire": { + "runtime_id": -237, + "component_based": false, + "version": 2 + }, + "minecraft:soul_lantern": { + "runtime_id": -269, + "component_based": false, + "version": 2 + }, + "minecraft:soul_sand": { + "runtime_id": 88, + "component_based": false, + "version": 2 + }, + "minecraft:soul_soil": { + "runtime_id": -236, + "component_based": false, + "version": 2 + }, + "minecraft:soul_torch": { + "runtime_id": -268, + "component_based": false, + "version": 2 + }, + "minecraft:sparkler": { + "runtime_id": 638, + "component_based": false, + "version": 2 + }, + "minecraft:spawn_egg": { + "runtime_id": 795, + "component_based": false, + "version": 2 + }, + "minecraft:spider_eye": { + "runtime_id": 300, + "component_based": false, + "version": 0 + }, + "minecraft:spider_spawn_egg": { + "runtime_id": 473, + "component_based": false, + "version": 2 + }, + "minecraft:spire_armor_trim_smithing_template": { + "runtime_id": 729, + "component_based": false, + "version": 2 + }, + "minecraft:splash_potion": { + "runtime_id": 594, + "component_based": false, + "version": 2 + }, + "minecraft:sponge": { + "runtime_id": 19, + "component_based": false, + "version": 2 + }, + "minecraft:spore_blossom": { + "runtime_id": -321, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_boat": { + "runtime_id": 404, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_button": { + "runtime_id": -144, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_chest_boat": { + "runtime_id": 679, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_door": { + "runtime_id": 586, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_double_slab": { + "runtime_id": -809, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_fence": { + "runtime_id": -579, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_fence_gate": { + "runtime_id": 183, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_hanging_sign": { + "runtime_id": -501, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_leaves": { + "runtime_id": -800, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_log": { + "runtime_id": -569, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_planks": { + "runtime_id": -739, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_pressure_plate": { + "runtime_id": -154, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_sapling": { + "runtime_id": -825, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_sign": { + "runtime_id": 609, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_slab": { + "runtime_id": -804, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_stairs": { + "runtime_id": 134, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_standing_sign": { + "runtime_id": -181, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_trapdoor": { + "runtime_id": -149, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_wall_sign": { + "runtime_id": -182, + "component_based": false, + "version": 2 + }, + "minecraft:spruce_wood": { + "runtime_id": -814, + "component_based": false, + "version": 2 + }, + "minecraft:spyglass": { + "runtime_id": 663, + "component_based": false, + "version": 2 + }, + "minecraft:squid_spawn_egg": { + "runtime_id": 477, + "component_based": false, + "version": 2 + }, + "minecraft:stained_glass": { + "runtime_id": 779, + "component_based": false, + "version": 2 + }, + "minecraft:stained_glass_pane": { + "runtime_id": 780, + "component_based": false, + "version": 2 + }, + "minecraft:stained_hardened_clay": { + "runtime_id": 739, + "component_based": false, + "version": 2 + }, + "minecraft:standing_banner": { + "runtime_id": 176, + "component_based": false, + "version": 2 + }, + "minecraft:standing_sign": { + "runtime_id": 63, + "component_based": false, + "version": 2 + }, + "minecraft:stick": { + "runtime_id": 345, + "component_based": false, + "version": 2 + }, + "minecraft:sticky_piston": { + "runtime_id": 29, + "component_based": false, + "version": 2 + }, + "minecraft:sticky_piston_arm_collision": { + "runtime_id": -217, + "component_based": false, + "version": 2 + }, + "minecraft:stone": { + "runtime_id": 1, + "component_based": false, + "version": 2 + }, + "minecraft:stone_axe": { + "runtime_id": 339, + "component_based": false, + "version": 2 + }, + "minecraft:stone_block_slab": { + "runtime_id": 756, + "component_based": false, + "version": 2 + }, + "minecraft:stone_block_slab2": { + "runtime_id": 757, + "component_based": false, + "version": 2 + }, + "minecraft:stone_block_slab3": { + "runtime_id": 758, + "component_based": false, + "version": 2 + }, + "minecraft:stone_block_slab4": { + "runtime_id": 759, + "component_based": false, + "version": 2 + }, + "minecraft:stone_brick_double_slab": { + "runtime_id": -881, + "component_based": false, + "version": 2 + }, + "minecraft:stone_brick_slab": { + "runtime_id": -875, + "component_based": false, + "version": 2 + }, + "minecraft:stone_brick_stairs": { + "runtime_id": 109, + "component_based": false, + "version": 2 + }, + "minecraft:stone_brick_wall": { + "runtime_id": -977, + "component_based": false, + "version": 2 + }, + "minecraft:stone_bricks": { + "runtime_id": 98, + "component_based": false, + "version": 2 + }, + "minecraft:stone_button": { + "runtime_id": 77, + "component_based": false, + "version": 2 + }, + "minecraft:stone_hoe": { + "runtime_id": 355, + "component_based": false, + "version": 2 + }, + "minecraft:stone_pickaxe": { + "runtime_id": 338, + "component_based": false, + "version": 2 + }, + "minecraft:stone_pressure_plate": { + "runtime_id": 70, + "component_based": false, + "version": 2 + }, + "minecraft:stone_shovel": { + "runtime_id": 337, + "component_based": false, + "version": 2 + }, + "minecraft:stone_stairs": { + "runtime_id": 67, + "component_based": false, + "version": 2 + }, + "minecraft:stone_sword": { + "runtime_id": 336, + "component_based": false, + "version": 2 + }, + "minecraft:stonebrick": { + "runtime_id": 754, + "component_based": false, + "version": 2 + }, + "minecraft:stonecutter": { + "runtime_id": 245, + "component_based": false, + "version": 2 + }, + "minecraft:stonecutter_block": { + "runtime_id": -197, + "component_based": false, + "version": 2 + }, + "minecraft:stray_spawn_egg": { + "runtime_id": 489, + "component_based": false, + "version": 2 + }, + "minecraft:strider_spawn_egg": { + "runtime_id": 523, + "component_based": false, + "version": 2 + }, + "minecraft:string": { + "runtime_id": 351, + "component_based": true, + "version": 2 + }, + "minecraft:stripped_acacia_log": { + "runtime_id": -8, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_acacia_wood": { + "runtime_id": -823, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_bamboo_block": { + "runtime_id": -528, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_birch_log": { + "runtime_id": -6, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_birch_wood": { + "runtime_id": -821, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_cherry_log": { + "runtime_id": -535, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_cherry_wood": { + "runtime_id": -545, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_crimson_hyphae": { + "runtime_id": -300, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_crimson_stem": { + "runtime_id": -240, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_dark_oak_log": { + "runtime_id": -9, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_dark_oak_wood": { + "runtime_id": -824, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_jungle_log": { + "runtime_id": -7, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_jungle_wood": { + "runtime_id": -822, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_mangrove_log": { + "runtime_id": -485, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_mangrove_wood": { + "runtime_id": -498, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_oak_log": { + "runtime_id": -10, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_oak_wood": { + "runtime_id": -819, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_pale_oak_log": { + "runtime_id": -994, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_pale_oak_wood": { + "runtime_id": -1004, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_spruce_log": { + "runtime_id": -5, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_spruce_wood": { + "runtime_id": -820, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_warped_hyphae": { + "runtime_id": -301, + "component_based": false, + "version": 2 + }, + "minecraft:stripped_warped_stem": { + "runtime_id": -241, + "component_based": false, + "version": 2 + }, + "minecraft:structure_block": { + "runtime_id": 252, + "component_based": false, + "version": 2 + }, + "minecraft:structure_void": { + "runtime_id": 217, + "component_based": false, + "version": 2 + }, + "minecraft:sugar": { + "runtime_id": 442, + "component_based": false, + "version": 2 + }, + "minecraft:sugar_cane": { + "runtime_id": 411, + "component_based": true, + "version": 2 + }, + "minecraft:sunflower": { + "runtime_id": 175, + "component_based": false, + "version": 2 + }, + "minecraft:suspicious_gravel": { + "runtime_id": -573, + "component_based": false, + "version": 2 + }, + "minecraft:suspicious_sand": { + "runtime_id": -529, + "component_based": false, + "version": 2 + }, + "minecraft:suspicious_stew": { + "runtime_id": 625, + "component_based": false, + "version": 0 + }, + "minecraft:sweet_berries": { + "runtime_id": 309, + "component_based": false, + "version": 0 + }, + "minecraft:sweet_berry_bush": { + "runtime_id": -207, + "component_based": false, + "version": 2 + }, + "minecraft:tadpole_bucket": { + "runtime_id": 668, + "component_based": false, + "version": 2 + }, + "minecraft:tadpole_spawn_egg": { + "runtime_id": 667, + "component_based": false, + "version": 2 + }, + "minecraft:tall_grass": { + "runtime_id": -864, + "component_based": false, + "version": 2 + }, + "minecraft:tallgrass": { + "runtime_id": 774, + "component_based": false, + "version": 2 + }, + "minecraft:target": { + "runtime_id": -239, + "component_based": false, + "version": 2 + }, + "minecraft:tide_armor_trim_smithing_template": { + "runtime_id": 726, + "component_based": false, + "version": 2 + }, + "minecraft:tinted_glass": { + "runtime_id": -334, + "component_based": false, + "version": 2 + }, + "minecraft:tnt": { + "runtime_id": 46, + "component_based": false, + "version": 2 + }, + "minecraft:tnt_minecart": { + "runtime_id": 558, + "component_based": false, + "version": 2 + }, + "minecraft:torch": { + "runtime_id": 50, + "component_based": false, + "version": 2 + }, + "minecraft:torchflower": { + "runtime_id": -568, + "component_based": false, + "version": 2 + }, + "minecraft:torchflower_crop": { + "runtime_id": -567, + "component_based": false, + "version": 2 + }, + "minecraft:torchflower_seeds": { + "runtime_id": 318, + "component_based": false, + "version": 0 + }, + "minecraft:totem_of_undying": { + "runtime_id": 601, + "component_based": false, + "version": 2 + }, + "minecraft:trader_llama_spawn_egg": { + "runtime_id": 686, + "component_based": false, + "version": 2 + }, + "minecraft:trapdoor": { + "runtime_id": 96, + "component_based": false, + "version": 2 + }, + "minecraft:trapped_chest": { + "runtime_id": 146, + "component_based": false, + "version": 2 + }, + "minecraft:trial_key": { + "runtime_id": 275, + "component_based": true, + "version": 1 + }, + "minecraft:trial_spawner": { + "runtime_id": -315, + "component_based": false, + "version": 2 + }, + "minecraft:trident": { + "runtime_id": 579, + "component_based": false, + "version": 2 + }, + "minecraft:trip_wire": { + "runtime_id": 132, + "component_based": false, + "version": 2 + }, + "minecraft:tripwire_hook": { + "runtime_id": 131, + "component_based": false, + "version": 2 + }, + "minecraft:tropical_fish": { + "runtime_id": 288, + "component_based": false, + "version": 0 + }, + "minecraft:tropical_fish_bucket": { + "runtime_id": 391, + "component_based": false, + "version": 2 + }, + "minecraft:tropical_fish_spawn_egg": { + "runtime_id": 507, + "component_based": false, + "version": 2 + }, + "minecraft:tube_coral": { + "runtime_id": -131, + "component_based": false, + "version": 2 + }, + "minecraft:tube_coral_block": { + "runtime_id": -132, + "component_based": false, + "version": 2 + }, + "minecraft:tube_coral_fan": { + "runtime_id": -133, + "component_based": false, + "version": 2 + }, + "minecraft:tube_coral_wall_fan": { + "runtime_id": -135, + "component_based": false, + "version": 2 + }, + "minecraft:tuff": { + "runtime_id": -333, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_brick_double_slab": { + "runtime_id": -756, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_brick_slab": { + "runtime_id": -755, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_brick_stairs": { + "runtime_id": -757, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_brick_wall": { + "runtime_id": -758, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_bricks": { + "runtime_id": -754, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_double_slab": { + "runtime_id": -745, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_slab": { + "runtime_id": -744, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_stairs": { + "runtime_id": -746, + "component_based": false, + "version": 2 + }, + "minecraft:tuff_wall": { + "runtime_id": -747, + "component_based": false, + "version": 2 + }, + "minecraft:turtle_egg": { + "runtime_id": -159, + "component_based": false, + "version": 2 + }, + "minecraft:turtle_helmet": { + "runtime_id": 606, + "component_based": false, + "version": 2 + }, + "minecraft:turtle_scute": { + "runtime_id": 605, + "component_based": false, + "version": 2 + }, + "minecraft:turtle_spawn_egg": { + "runtime_id": 513, + "component_based": false, + "version": 2 + }, + "minecraft:twisting_vines": { + "runtime_id": -287, + "component_based": false, + "version": 2 + }, + "minecraft:underwater_tnt": { + "runtime_id": -985, + "component_based": false, + "version": 2 + }, + "minecraft:underwater_torch": { + "runtime_id": 239, + "component_based": false, + "version": 2 + }, + "minecraft:undyed_shulker_box": { + "runtime_id": 205, + "component_based": false, + "version": 2 + }, + "minecraft:unknown": { + "runtime_id": -305, + "component_based": false, + "version": 2 + }, + "minecraft:unlit_redstone_torch": { + "runtime_id": 75, + "component_based": false, + "version": 2 + }, + "minecraft:unpowered_comparator": { + "runtime_id": 149, + "component_based": false, + "version": 2 + }, + "minecraft:unpowered_repeater": { + "runtime_id": 93, + "component_based": false, + "version": 2 + }, + "minecraft:vault": { + "runtime_id": -314, + "component_based": false, + "version": 2 + }, + "minecraft:verdant_froglight": { + "runtime_id": -470, + "component_based": false, + "version": 2 + }, + "minecraft:vex_armor_trim_smithing_template": { + "runtime_id": 725, + "component_based": false, + "version": 2 + }, + "minecraft:vex_spawn_egg": { + "runtime_id": 504, + "component_based": false, + "version": 2 + }, + "minecraft:villager_spawn_egg": { + "runtime_id": 476, + "component_based": false, + "version": 2 + }, + "minecraft:vindicator_spawn_egg": { + "runtime_id": 502, + "component_based": false, + "version": 2 + }, + "minecraft:vine": { + "runtime_id": 106, + "component_based": false, + "version": 2 + }, + "minecraft:wall_banner": { + "runtime_id": 177, + "component_based": false, + "version": 2 + }, + "minecraft:wall_sign": { + "runtime_id": 68, + "component_based": false, + "version": 2 + }, + "minecraft:wandering_trader_spawn_egg": { + "runtime_id": 520, + "component_based": false, + "version": 2 + }, + "minecraft:ward_armor_trim_smithing_template": { + "runtime_id": 723, + "component_based": false, + "version": 2 + }, + "minecraft:warden_spawn_egg": { + "runtime_id": 670, + "component_based": false, + "version": 2 + }, + "minecraft:warped_button": { + "runtime_id": -261, + "component_based": false, + "version": 2 + }, + "minecraft:warped_door": { + "runtime_id": 655, + "component_based": false, + "version": 2 + }, + "minecraft:warped_double_slab": { + "runtime_id": -267, + "component_based": false, + "version": 2 + }, + "minecraft:warped_fence": { + "runtime_id": -257, + "component_based": false, + "version": 2 + }, + "minecraft:warped_fence_gate": { + "runtime_id": -259, + "component_based": false, + "version": 2 + }, + "minecraft:warped_fungus": { + "runtime_id": -229, + "component_based": false, + "version": 2 + }, + "minecraft:warped_fungus_on_a_stick": { + "runtime_id": 656, + "component_based": true, + "version": 2 + }, + "minecraft:warped_hanging_sign": { + "runtime_id": -507, + "component_based": false, + "version": 2 + }, + "minecraft:warped_hyphae": { + "runtime_id": -298, + "component_based": false, + "version": 2 + }, + "minecraft:warped_nylium": { + "runtime_id": -233, + "component_based": false, + "version": 2 + }, + "minecraft:warped_planks": { + "runtime_id": -243, + "component_based": false, + "version": 2 + }, + "minecraft:warped_pressure_plate": { + "runtime_id": -263, + "component_based": false, + "version": 2 + }, + "minecraft:warped_roots": { + "runtime_id": -224, + "component_based": false, + "version": 2 + }, + "minecraft:warped_sign": { + "runtime_id": 653, + "component_based": false, + "version": 2 + }, + "minecraft:warped_slab": { + "runtime_id": -265, + "component_based": false, + "version": 2 + }, + "minecraft:warped_stairs": { + "runtime_id": -255, + "component_based": false, + "version": 2 + }, + "minecraft:warped_standing_sign": { + "runtime_id": -251, + "component_based": false, + "version": 2 + }, + "minecraft:warped_stem": { + "runtime_id": -226, + "component_based": false, + "version": 2 + }, + "minecraft:warped_trapdoor": { + "runtime_id": -247, + "component_based": false, + "version": 2 + }, + "minecraft:warped_wall_sign": { + "runtime_id": -253, + "component_based": false, + "version": 2 + }, + "minecraft:warped_wart_block": { + "runtime_id": -227, + "component_based": false, + "version": 2 + }, + "minecraft:water": { + "runtime_id": 9, + "component_based": false, + "version": 2 + }, + "minecraft:water_bucket": { + "runtime_id": 387, + "component_based": false, + "version": 2 + }, + "minecraft:waterlily": { + "runtime_id": 111, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_chiseled_copper": { + "runtime_id": -764, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_copper": { + "runtime_id": -344, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_copper_bulb": { + "runtime_id": -780, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_copper_door": { + "runtime_id": -788, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_copper_grate": { + "runtime_id": -772, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_copper_trapdoor": { + "runtime_id": -796, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_cut_copper": { + "runtime_id": -351, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_cut_copper_slab": { + "runtime_id": -365, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_cut_copper_stairs": { + "runtime_id": -358, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_double_cut_copper_slab": { + "runtime_id": -372, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_chiseled_copper": { + "runtime_id": -765, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_copper": { + "runtime_id": -345, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_copper_bulb": { + "runtime_id": -781, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_copper_door": { + "runtime_id": -789, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_copper_grate": { + "runtime_id": -773, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_copper_trapdoor": { + "runtime_id": -797, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_cut_copper": { + "runtime_id": -352, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_cut_copper_slab": { + "runtime_id": -366, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_cut_copper_stairs": { + "runtime_id": -359, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_exposed_double_cut_copper_slab": { + "runtime_id": -373, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_chiseled_copper": { + "runtime_id": -766, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_copper": { + "runtime_id": -446, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_copper_bulb": { + "runtime_id": -783, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_copper_door": { + "runtime_id": -791, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_copper_grate": { + "runtime_id": -775, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_copper_trapdoor": { + "runtime_id": -799, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_cut_copper": { + "runtime_id": -447, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_cut_copper_slab": { + "runtime_id": -449, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_cut_copper_stairs": { + "runtime_id": -448, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_oxidized_double_cut_copper_slab": { + "runtime_id": -450, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_chiseled_copper": { + "runtime_id": -767, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_copper": { + "runtime_id": -346, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_copper_bulb": { + "runtime_id": -782, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_copper_door": { + "runtime_id": -790, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_copper_grate": { + "runtime_id": -774, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_copper_trapdoor": { + "runtime_id": -798, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_cut_copper": { + "runtime_id": -353, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_cut_copper_slab": { + "runtime_id": -367, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_cut_copper_stairs": { + "runtime_id": -360, + "component_based": false, + "version": 2 + }, + "minecraft:waxed_weathered_double_cut_copper_slab": { + "runtime_id": -374, + "component_based": false, + "version": 2 + }, + "minecraft:wayfinder_armor_trim_smithing_template": { + "runtime_id": 731, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_chiseled_copper": { + "runtime_id": -762, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_copper": { + "runtime_id": -342, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_copper_bulb": { + "runtime_id": -778, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_copper_door": { + "runtime_id": -786, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_copper_grate": { + "runtime_id": -770, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_copper_trapdoor": { + "runtime_id": -794, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_cut_copper": { + "runtime_id": -349, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_cut_copper_slab": { + "runtime_id": -363, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_cut_copper_stairs": { + "runtime_id": -356, + "component_based": false, + "version": 2 + }, + "minecraft:weathered_double_cut_copper_slab": { + "runtime_id": -370, + "component_based": false, + "version": 2 + }, + "minecraft:web": { + "runtime_id": 30, + "component_based": false, + "version": 2 + }, + "minecraft:weeping_vines": { + "runtime_id": -231, + "component_based": false, + "version": 2 + }, + "minecraft:wet_sponge": { + "runtime_id": -984, + "component_based": false, + "version": 2 + }, + "minecraft:wheat": { + "runtime_id": 359, + "component_based": false, + "version": 2 + }, + "minecraft:wheat_seeds": { + "runtime_id": 313, + "component_based": false, + "version": 0 + }, + "minecraft:white_bundle": { + "runtime_id": 262, + "component_based": true, + "version": 1 + }, + "minecraft:white_candle": { + "runtime_id": -413, + "component_based": false, + "version": 2 + }, + "minecraft:white_candle_cake": { + "runtime_id": -430, + "component_based": false, + "version": 2 + }, + "minecraft:white_carpet": { + "runtime_id": 171, + "component_based": false, + "version": 2 + }, + "minecraft:white_concrete": { + "runtime_id": 236, + "component_based": false, + "version": 2 + }, + "minecraft:white_concrete_powder": { + "runtime_id": 237, + "component_based": false, + "version": 2 + }, + "minecraft:white_dye": { + "runtime_id": 436, + "component_based": false, + "version": 2 + }, + "minecraft:white_glazed_terracotta": { + "runtime_id": 220, + "component_based": false, + "version": 2 + }, + "minecraft:white_shulker_box": { + "runtime_id": 218, + "component_based": false, + "version": 2 + }, + "minecraft:white_stained_glass": { + "runtime_id": 241, + "component_based": false, + "version": 2 + }, + "minecraft:white_stained_glass_pane": { + "runtime_id": 160, + "component_based": false, + "version": 2 + }, + "minecraft:white_terracotta": { + "runtime_id": 159, + "component_based": false, + "version": 2 + }, + "minecraft:white_tulip": { + "runtime_id": -835, + "component_based": false, + "version": 2 + }, + "minecraft:white_wool": { + "runtime_id": 35, + "component_based": false, + "version": 2 + }, + "minecraft:wild_armor_trim_smithing_template": { + "runtime_id": 722, + "component_based": false, + "version": 2 + }, + "minecraft:wind_charge": { + "runtime_id": 277, + "component_based": true, + "version": 1 + }, + "minecraft:witch_spawn_egg": { + "runtime_id": 479, + "component_based": false, + "version": 2 + }, + "minecraft:wither_rose": { + "runtime_id": -216, + "component_based": false, + "version": 2 + }, + "minecraft:wither_skeleton_skull": { + "runtime_id": -965, + "component_based": false, + "version": 2 + }, + "minecraft:wither_skeleton_spawn_egg": { + "runtime_id": 492, + "component_based": false, + "version": 2 + }, + "minecraft:wither_spawn_egg": { + "runtime_id": 536, + "component_based": false, + "version": 2 + }, + "minecraft:wolf_armor": { + "runtime_id": 742, + "component_based": true, + "version": 2 + }, + "minecraft:wolf_spawn_egg": { + "runtime_id": 466, + "component_based": false, + "version": 2 + }, + "minecraft:wood": { + "runtime_id": 782, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_axe": { + "runtime_id": 335, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_button": { + "runtime_id": 143, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_door": { + "runtime_id": 384, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_hoe": { + "runtime_id": 354, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_pickaxe": { + "runtime_id": 334, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_pressure_plate": { + "runtime_id": 72, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_shovel": { + "runtime_id": 333, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_slab": { + "runtime_id": 769, + "component_based": false, + "version": 2 + }, + "minecraft:wooden_sword": { + "runtime_id": 332, + "component_based": false, + "version": 2 + }, + "minecraft:wool": { + "runtime_id": 750, + "component_based": false, + "version": 2 + }, + "minecraft:writable_book": { + "runtime_id": 544, + "component_based": false, + "version": 2 + }, + "minecraft:written_book": { + "runtime_id": 545, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_bundle": { + "runtime_id": 269, + "component_based": true, + "version": 1 + }, + "minecraft:yellow_candle": { + "runtime_id": -417, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_candle_cake": { + "runtime_id": -434, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_carpet": { + "runtime_id": -600, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_concrete": { + "runtime_id": -631, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_concrete_powder": { + "runtime_id": -712, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_dye": { + "runtime_id": 432, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_glazed_terracotta": { + "runtime_id": 224, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_shulker_box": { + "runtime_id": -616, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_stained_glass": { + "runtime_id": -676, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_stained_glass_pane": { + "runtime_id": -646, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_terracotta": { + "runtime_id": -727, + "component_based": false, + "version": 2 + }, + "minecraft:yellow_wool": { + "runtime_id": -558, + "component_based": false, + "version": 2 + }, + "minecraft:zoglin_spawn_egg": { + "runtime_id": 526, + "component_based": false, + "version": 2 + }, + "minecraft:zombie_head": { + "runtime_id": -966, + "component_based": false, + "version": 2 + }, + "minecraft:zombie_horse_spawn_egg": { + "runtime_id": 496, + "component_based": false, + "version": 2 + }, + "minecraft:zombie_pigman_spawn_egg": { + "runtime_id": 475, + "component_based": false, + "version": 2 + }, + "minecraft:zombie_spawn_egg": { + "runtime_id": 474, + "component_based": false, + "version": 2 + }, + "minecraft:zombie_villager_spawn_egg": { + "runtime_id": 505, + "component_based": false, + "version": 2 + } +} \ No newline at end of file diff --git a/legacyver/item_translator.go b/legacyver/item_translator.go index a77a880..2d63066 100644 --- a/legacyver/item_translator.go +++ b/legacyver/item_translator.go @@ -3,8 +3,8 @@ package legacyver import ( "fmt" "github.com/akmalfairuz/legacy-version/internal/item" + "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" - "github.com/akmalfairuz/legacy-version/packbuilder" "github.com/df-mc/dragonfly/server/world" "github.com/samber/lo" "github.com/sandertv/gophertunnel/minecraft" @@ -39,6 +39,10 @@ type ItemTranslator interface { Register(item world.CustomItem, replacement string) // CustomItems lists all custom items used as substitutes, with the runtime id as the key CustomItems() map[int32]world.CustomItem + // DowngradeLegacyItemRegistry ... + DowngradeLegacyItemRegistry(entries []proto.LegacyItemRegistryEntry) []proto.LegacyItemRegistryEntry + // UpgradeLegacyItemRegistry ... + UpgradeLegacyItemRegistry(entries []proto.LegacyItemRegistryEntry) []proto.LegacyItemRegistryEntry } type DefaultItemTranslator struct { @@ -480,51 +484,84 @@ func (t *DefaultItemTranslator) DowngradeItemPackets(pks []packet.Packet, _ *min }) pk.EventData = (itemType.NetworkID << 16) | int32(itemType.MetadataValue) } - case *packet.StartGame: - for i, entry := range pk.Items { - if !entry.ComponentBased { - itemType := t.DowngradeItemType(protocol.ItemType{ - NetworkID: int32(entry.RuntimeID), - MetadataValue: 0, - }) - if itemType.NetworkID == t.mapping.Air() { - removeIndex(pk.Items, i) - continue - } - entry.RuntimeID = int16(itemType.NetworkID) - - var ok bool - if entry.Name, ok = t.mapping.ItemRuntimeIDToName(itemType.NetworkID); !ok { - panic(itemType) - } - } else { - t.latest.RegisterEntry(entry.Name) - entry.RuntimeID = int16(t.mapping.RegisterEntry(entry.Name)) - } - pk.Items[i] = entry - } - for rid, i := range t.CustomItems() { - name, _ := i.EncodeItem() - pk.Items = append(pk.Items, protocol.ItemEntry{ - Name: name, - RuntimeID: int16(rid), - ComponentBased: true, - }) - } - case *packet.ItemComponent: - for _, i := range t.CustomItems() { - name, _ := i.EncodeItem() - pk.Items = append(pk.Items, protocol.ItemComponentEntry{ - Name: name, - Data: packbuilder.Components(i), - }) - } + //case *packet.ItemRegistry: + // for _, i := range t.CustomItems() { + // name, _ := i.EncodeItem() + // pk.Items = append(pk.Items, protocol.ItemEntry{ + // Name: name, + // Data: packbuilder.Components(i), + // }) + // } } result = append(result, pk) } return result } +func (t *DefaultItemTranslator) DowngradeLegacyItemRegistry(entries []proto.LegacyItemRegistryEntry) []proto.LegacyItemRegistryEntry { + for i, entry := range entries { + if !entry.ComponentBased { + itemType := t.DowngradeItemType(protocol.ItemType{ + NetworkID: int32(entry.RuntimeID), + MetadataValue: 0, + }) + if itemType.NetworkID == t.mapping.Air() { + removeIndex(entries, i) + continue + } + entry.RuntimeID = int16(itemType.NetworkID) + + var ok bool + if entry.Name, ok = t.mapping.ItemRuntimeIDToName(itemType.NetworkID); !ok { + panic(itemType) + } + } else { + t.latest.RegisterEntryRID(entry.Name, int32(entry.RuntimeID), 2) + entry.RuntimeID = int16(t.mapping.RegisterEntry(entry.Name)) + } + entries[i] = entry + } + for rid, i := range t.CustomItems() { + name, _ := i.EncodeItem() + entries = append(entries, proto.LegacyItemRegistryEntry{ + Name: name, + RuntimeID: int16(rid), + ComponentBased: true, + }) + } + return entries +} + +func (t *DefaultItemTranslator) UpgradeLegacyItemRegistry(entries []proto.LegacyItemRegistryEntry) []proto.LegacyItemRegistryEntry { + for i, entry := range entries { + if !entry.ComponentBased { + itemType := t.UpgradeItemType(protocol.ItemType{ + NetworkID: int32(entry.RuntimeID), + MetadataValue: 0, + }) + entry.RuntimeID = int16(itemType.NetworkID) + + var ok bool + if entry.Name, ok = t.latest.ItemRuntimeIDToName(itemType.NetworkID); !ok { + panic(itemType) + } + } else { + t.latest.RegisterEntryRID(entry.Name, int32(entry.RuntimeID), 2) + entry.RuntimeID = int16(t.mapping.RegisterEntry(entry.Name)) + } + entries[i] = entry + } + for rid, i := range t.CustomItems() { + name, _ := i.EncodeItem() + entries = append(entries, proto.LegacyItemRegistryEntry{ + Name: name, + RuntimeID: int16(rid), + ComponentBased: true, + }) + } + return entries +} + func (t *DefaultItemTranslator) UpgradeItemPackets(pks []packet.Packet, _ *minecraft.Conn) (result []packet.Packet) { for _, pk := range pks { switch pk := pk.(type) { @@ -703,41 +740,14 @@ func (t *DefaultItemTranslator) UpgradeItemPackets(pks []packet.Packet, _ *minec }) pk.EventData = (itemType.NetworkID << 16) | int32(itemType.MetadataValue) } - case *packet.StartGame: - for i, entry := range pk.Items { - if !entry.ComponentBased { - itemType := t.UpgradeItemType(protocol.ItemType{ - NetworkID: int32(entry.RuntimeID), - MetadataValue: 0, - }) - entry.RuntimeID = int16(itemType.NetworkID) - - var ok bool - if entry.Name, ok = t.latest.ItemRuntimeIDToName(itemType.NetworkID); !ok { - panic(itemType) - } - } else { - t.latest.RegisterEntry(entry.Name) - entry.RuntimeID = int16(t.mapping.RegisterEntry(entry.Name)) - } - pk.Items[i] = entry - } - for rid, i := range t.CustomItems() { - name, _ := i.EncodeItem() - pk.Items = append(pk.Items, protocol.ItemEntry{ - Name: name, - RuntimeID: int16(rid), - ComponentBased: true, - }) - } - case *packet.ItemComponent: - for _, i := range t.CustomItems() { - name, _ := i.EncodeItem() - pk.Items = append(pk.Items, protocol.ItemComponentEntry{ - Name: name, - Data: packbuilder.Components(i), - }) - } + //case *packet.ItemRegistry: + // for _, i := range t.CustomItems() { + // name, _ := i.EncodeItem() + // pk.Items = append(pk.Items, protocol.ItemEntry{ + // Name: name, + // Data: packbuilder.Components(i), + // }) + // } } result = append(result, pk) } diff --git a/legacyver/legacypacket/add_player.go b/legacyver/legacypacket/add_player.go index c14875c..0dcbf90 100644 --- a/legacyver/legacypacket/add_player.go +++ b/legacyver/legacypacket/add_player.go @@ -53,7 +53,7 @@ type AddPlayer struct { // attributes of the entity. EntityProperties protocol.EntityProperties // AbilityData represents various data about the abilities of a player, such as ability layers or permissions. - AbilityData protocol.AbilityData + AbilityData proto.AbilityData // EntityLinks is a list of entity links that are currently active on the player. These links alter the // way the player shows up when first spawned in terms of it shown as riding an entity. Setting these // links is important for new viewers to see the player is riding another entity. diff --git a/legacyver/legacypacket/boss_event.go b/legacyver/legacypacket/boss_event.go new file mode 100644 index 0000000..3a6dd6c --- /dev/null +++ b/legacyver/legacypacket/boss_event.go @@ -0,0 +1,115 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +const ( + BossEventShow = iota + BossEventRegisterPlayer + BossEventHide + BossEventUnregisterPlayer + BossEventHealthPercentage + BossEventTitle + BossEventAppearanceProperties + BossEventTexture + BossEventRequest +) + +const ( + BossEventColourGrey = iota + BossEventColourBlue + BossEventColourRed + BossEventColourGreen + BossEventColourYellow + BossEventColourPurple + BossEventColourWhite +) + +// BossEvent is sent by the server to make a specific 'boss event' occur in the +// world. It includes features such as showing a boss bar to the player and +// turning the sky dark. +type BossEvent struct { + // BossEntityUniqueID is the unique ID of the boss entity that the boss + // event sent involves. By default, the health percentage and title of the + // boss bar depend on the health and name tag of this entity. If + // BossEntityUniqueID is the same as the client's entity unique ID, its + // HealthPercentage and BossBarTitle can be freely altered. + BossEntityUniqueID int64 + // EventType is the type of the event. The fields written depend on the + // event type set, and some event types are sent by the client, whereas + // others are sent by the server. The event type is one of the constants + // above. + EventType uint32 + // PlayerUniqueID is the unique ID of the player that is registered to or + // unregistered from the boss fight. It is set if EventType is either + // BossEventRegisterPlayer or BossEventUnregisterPlayer. + PlayerUniqueID int64 + // BossBarTitle is the title shown above the boss bar. It may be set to set + // a different title if the BossEntityUniqueID matches the client's entity + // unique ID. + BossBarTitle string + // FilteredBossBarTitle is a filtered version of BossBarTitle with all the + // profanity removed. The client will use this over BossBarTitle if this + // field is not empty and they have the "Filter Profanity" setting enabled. + FilteredBossBarTitle string + // HealthPercentage is the percentage of health that is shown in the boss + // bar (0.0-1.0). The HealthPercentage may be set to a specific value if the + // BossEntityUniqueID matches the client's entity unique ID. + HealthPercentage float32 + // ScreenDarkening currently seems not to do anything. + ScreenDarkening uint16 + // Colour is the colour of the boss bar that is shown when a player is + // subscribed. It is only set if the EventType is BossEventShow, + // BossEventAppearanceProperties or BossEventTexture. This is functional as + // of 1.18 and can be any of the BossEventColour constants listed above. + Colour uint32 + // Overlay is the overlay of the boss bar that is shown on top of the boss + // bar when a player is subscribed. It currently does not function. It is + // only set if the EventType is BossEventShow, BossEventAppearanceProperties + // or BossEventTexture. + Overlay uint32 +} + +// ID ... +func (*BossEvent) ID() uint32 { + return packet.IDBossEvent +} + +func (pk *BossEvent) Marshal(io protocol.IO) { + io.Varint64(&pk.BossEntityUniqueID) + io.Varuint32(&pk.EventType) + switch pk.EventType { + case BossEventShow: + io.String(&pk.BossBarTitle) + if proto.IsProtoGTE(io, proto.ID776) { + io.String(&pk.FilteredBossBarTitle) + } + io.Float32(&pk.HealthPercentage) + io.Uint16(&pk.ScreenDarkening) + io.Varuint32(&pk.Colour) + io.Varuint32(&pk.Overlay) + case BossEventRegisterPlayer, BossEventUnregisterPlayer, BossEventRequest: + io.Varint64(&pk.PlayerUniqueID) + case BossEventHide: + // No extra payload for this boss event type. + case BossEventHealthPercentage: + io.Float32(&pk.HealthPercentage) + case BossEventTitle: + io.String(&pk.BossBarTitle) + if proto.IsProtoGTE(io, proto.ID776) { + io.String(&pk.FilteredBossBarTitle) + } + case BossEventAppearanceProperties: + io.Uint16(&pk.ScreenDarkening) + io.Varuint32(&pk.Colour) + io.Varuint32(&pk.Overlay) + case BossEventTexture: + io.Varuint32(&pk.Colour) + io.Varuint32(&pk.Overlay) + default: + io.UnknownEnumOption(pk.EventType, "boss event type") + } +} diff --git a/legacyver/legacypacket/camera_aim_assist_presets.go b/legacyver/legacypacket/camera_aim_assist_presets.go new file mode 100644 index 0000000..c0cabb6 --- /dev/null +++ b/legacyver/legacypacket/camera_aim_assist_presets.go @@ -0,0 +1,36 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +const ( + CameraAunAssistPresetOperationSet = iota + CameraAunAssistPresetOperationAddToExisting +) + +// CameraAimAssistPresets is sent by the server to the client to provide a list of categories and presets +// that can be used when sending a CameraAimAssist packet or a CameraInstruction including aim assist. +type CameraAimAssistPresets struct { + // CategoryGroups is a list of groups of categories which can be referenced by one of the Presets. + CategoryGroups []protocol.CameraAimAssistCategoryGroup + // Presets is a list of presets which define a base for how aim assist should behave + Presets []protocol.CameraAimAssistPreset + // Operation is the operation to perform with the presets. It is one of the constants above. + Operation byte +} + +// ID ... +func (*CameraAimAssistPresets) ID() uint32 { + return packet.IDCameraAimAssistPresets +} + +func (pk *CameraAimAssistPresets) Marshal(io protocol.IO) { + protocol.Slice(io, &pk.CategoryGroups) + protocol.Slice(io, &pk.Presets) + if proto.IsProtoGTE(io, proto.ID776) { + io.Uint8(&pk.Operation) + } +} diff --git a/legacyver/legacypacket/client_cheat_ability.go b/legacyver/legacypacket/client_cheat_ability.go new file mode 100644 index 0000000..66e2149 --- /dev/null +++ b/legacyver/legacypacket/client_cheat_ability.go @@ -0,0 +1,24 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +// ClientCheatAbility functions the same as UpdateAbilities. It is unclear why these two were separated. +// +// Deprecated: ClientCheatAbility is deprecated as of 1.20.10. +type ClientCheatAbility struct { + // AbilityData represents various data about the abilities of a player, such as ability layers or permissions. + AbilityData proto.AbilityData +} + +// ID ... +func (*ClientCheatAbility) ID() uint32 { + return packet.IDClientCheatAbility +} + +func (pk *ClientCheatAbility) Marshal(io protocol.IO) { + protocol.Single(io, &pk.AbilityData) +} diff --git a/legacyver/legacypacket/command_block_update.go b/legacyver/legacypacket/command_block_update.go new file mode 100644 index 0000000..ad09c5d --- /dev/null +++ b/legacyver/legacypacket/command_block_update.go @@ -0,0 +1,88 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +const ( + CommandBlockImpulse = iota + CommandBlockRepeating + CommandBlockChain +) + +// CommandBlockUpdate is sent by the client to update a command block at a specific position. The command +// block may be either a physical block or an entity. +type CommandBlockUpdate struct { + // Block specifies if the command block updated was an actual physical block. If false, the command block + // is in a minecart and has an entity runtime ID instead. + Block bool + + // Position is the position of the command block updated. It is only set if Block is set to true. Nothing + // happens if no command block is set at this position. + Position protocol.BlockPos + // Mode is the mode of the command block. It is either CommandBlockImpulse, CommandBlockChain or + // CommandBlockRepeat. It is only set if Block is set to true. + Mode uint32 + // NeedsRedstone specifies if the command block needs to be powered by redstone to be activated. If false, + // the command block is always active. The field is only set if Block is set to true. + NeedsRedstone bool + // Conditional specifies the behaviour of the command block if the command block before it (the opposite + // side of the direction the arrow if facing) fails to execute. If set to false, it will activate at all + // times, whereas if set to true, it will activate only if the previous command block executed + // successfully. The field is only set if Block is set to true. + Conditional bool + + // MinecartEntityRuntimeID is the runtime ID of the minecart entity carrying the command block that is + // updated. It is set only if Block is set to false. + MinecartEntityRuntimeID uint64 + + // Command is the command currently entered in the command block. This is the command that is executed + // when the command block is activated. + Command string + // LastOutput is the output of the last command executed by the command block. It may be left empty to + // show simply no output at all, in combination with setting ShouldTrackOutput to false. + LastOutput string + // Name is the name of the command block updated. If not empty, it will show this name hovering above the + // command block when hovering over the block with the cursor. + Name string + // FilteredName is a filtered version of Name with all the profanity removed. The client will use this + // over Name if this field is not empty and they have the "Filter Profanity" setting enabled. + FilteredName string + // ShouldTrackOutput specifies if the command block tracks output. If set to false, the output box won't + // be shown within the command block. + ShouldTrackOutput bool + // TickDelay is the delay in ticks between executions of a command block, if it is a repeating command + // block. + TickDelay int32 + // ExecuteOnFirstTick specifies if the command block should execute on the first tick, AKA as soon as the + // command block is enabled. + ExecuteOnFirstTick bool +} + +// ID ... +func (*CommandBlockUpdate) ID() uint32 { + return packet.IDCommandBlockUpdate +} + +func (pk *CommandBlockUpdate) Marshal(io protocol.IO) { + io.Bool(&pk.Block) + if pk.Block { + io.UBlockPos(&pk.Position) + io.Varuint32(&pk.Mode) + io.Bool(&pk.NeedsRedstone) + io.Bool(&pk.Conditional) + } else { + io.Varuint64(&pk.MinecartEntityRuntimeID) + } + io.String(&pk.Command) + io.String(&pk.LastOutput) + io.String(&pk.Name) + if proto.IsProtoGTE(io, proto.ID776) { + io.String(&pk.FilteredName) + } + io.Bool(&pk.ShouldTrackOutput) + io.Int32(&pk.TickDelay) + io.Bool(&pk.ExecuteOnFirstTick) +} diff --git a/legacyver/legacypacket/creative_content.go b/legacyver/legacypacket/creative_content.go new file mode 100644 index 0000000..349719e --- /dev/null +++ b/legacyver/legacypacket/creative_content.go @@ -0,0 +1,53 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +// CreativeContent is a packet sent by the server to set the creative inventory's content for a player. +// Introduced in 1.16, this packet replaces the previous method - sending an InventoryContent packet with +// creative inventory window ID. +// As of v1.21.60, this packet is no longer required to be sent as part of the login sequence however the +// client will crash if they try to open their creative inventory before receiving this packet. Every item +// must be part of a group, any items that are not part of a group will need to reference an "anonymous group" +// which has an empty name OR no icon. The order of Groups and Items is how the client will render items +// in the creative inventory compared to the previous, hard coded order. +// +// Below is an example of defining 2 ungrouped items, 2 grouped items and then another 2 ungrouped items, all +// in the nature category. +// +// CreativeContent{ +// Groups: []protocol.CreativeGroup{ +// {Category: 1}, // No name or icon, this is the "anonymous group" +// {Category: 1, Name: "itemGroup.name.planks", Icon: protocol.ItemStack{...}}, // A "planks" group +// {Category: 1}, // Another "anonymous group" +// }, +// Items: []protocol.CreativeItem{ +// {CreativeItemNetworkID: 0, Item: protocol.ItemStack{...}, GroupIndex: 0}, // Ungrouped before "planks" +// {CreativeItemNetworkID: 1, Item: protocol.ItemStack{...}, GroupIndex: 0}, // Ungrouped before "planks" +// {CreativeItemNetworkID: 2, Item: protocol.ItemStack{...}, GroupIndex: 1}, // Grouped under the "planks" group +// {CreativeItemNetworkID: 3, Item: protocol.ItemStack{...}, GroupIndex: 1}, // Grouped under the "planks" group +// {CreativeItemNetworkID: 4, Item: protocol.ItemStack{...}, GroupIndex: 2}, // Ungrouped after "planks" +// {CreativeItemNetworkID: 5, Item: protocol.ItemStack{...}, GroupIndex: 2}, // Ungrouped after "planks" +// } +// } +type CreativeContent struct { + // Groups is a list of the groups that should be added to the creative inventory. + Groups []protocol.CreativeGroup + // Items is a list of the items that should be added to the creative inventory. + Items []proto.CreativeItem +} + +// ID ... +func (*CreativeContent) ID() uint32 { + return packet.IDCreativeContent +} + +func (pk *CreativeContent) Marshal(io protocol.IO) { + if proto.IsProtoGTE(io, proto.ID776) { + protocol.Slice(io, &pk.Groups) + } + protocol.Slice(io, &pk.Items) +} diff --git a/legacyver/legacypacket/item_registry.go b/legacyver/legacypacket/item_registry.go new file mode 100644 index 0000000..e34e033 --- /dev/null +++ b/legacyver/legacypacket/item_registry.go @@ -0,0 +1,25 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +// ItemRegistry is sent by the server to send the client a list of available items and attach client-side +// components to a custom item. This packet was formerly known as the ItemComponent packet before 1.21.60, +// which did not include item definitions but only the components. +type ItemRegistry struct { + // Items is a list of all items with their legacy IDs which are available in the game. Failing to send any + // of the items that are in the game will crash mobile clients. Any custom components are also attached to + // the items in this list. + Items []proto.ItemEntry +} + +// ID ... +func (*ItemRegistry) ID() uint32 { + return packet.IDItemRegistry +} +func (pk *ItemRegistry) Marshal(io protocol.IO) { + protocol.Slice(io, &pk.Items) +} diff --git a/legacyver/legacypacket/start_game.go b/legacyver/legacypacket/start_game.go index 5e66b54..fe6bdc2 100644 --- a/legacyver/legacypacket/start_game.go +++ b/legacyver/legacypacket/start_game.go @@ -200,7 +200,7 @@ type StartGame struct { Blocks []protocol.BlockEntry // Items is a list of all items with their legacy IDs which are available in the game. Failing to send any // of the items that are in the game will crash mobile clients. - Items []protocol.ItemEntry + Items []proto.LegacyItemRegistryEntry // MultiPlayerCorrelationID is a unique ID specifying the multi-player session of the player. A random // UUID should be filled out for this field. MultiPlayerCorrelationID string @@ -316,7 +316,11 @@ func (pk *StartGame) Marshal(io protocol.IO) { io.Int64(&pk.Time) io.Varint32(&pk.EnchantmentSeed) protocol.Slice(io, &pk.Blocks) - protocol.Slice(io, &pk.Items) + if proto.IsProtoLT(io, proto.ID776) { + protocol.Slice(io, &pk.Items) + } else { + proto.EmptySlice(io, &pk.Items) + } io.String(&pk.MultiPlayerCorrelationID) io.Bool(&pk.ServerAuthoritativeInventory) io.String(&pk.GameVersion) diff --git a/legacyver/legacypacket/structure_block_update.go b/legacyver/legacypacket/structure_block_update.go new file mode 100644 index 0000000..43c535f --- /dev/null +++ b/legacyver/legacypacket/structure_block_update.go @@ -0,0 +1,82 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +const ( + StructureBlockData = iota + StructureBlockSave + StructureBlockLoad + StructureBlockCorner + StructureBlockInvalid + StructureBlockExport +) + +const ( + StructureRedstoneSaveModeMemory = iota + StructureRedstoneSaveModeDisk +) + +// StructureBlockUpdate is sent by the client when it updates a structure block using the in-game UI. The +// data it contains depends on the type of structure block that it is. In Minecraft Bedrock Edition v1.11, +// there is only the Export structure block type, but in v1.13 the ones present in Java Edition will, +// according to the wiki, be added too. +type StructureBlockUpdate struct { + // Position is the position of the structure block that is updated. + Position protocol.BlockPos + // StructureName is the name of the structure that was set in the structure block's UI. This is the name + // used to export the structure to a file. + StructureName string + // FilteredStructureName is a filtered version of StructureName with all the profanity removed. The client + // will use this over StructureName if this field is not empty and they have the "Filter Profanity" + // setting enabled. + FilteredStructureName string + // DataField is the name of a function to run, usually used during natural generation. A description can + // be found here: https://minecraft.wiki/w/Structure_Block#Data. + DataField string + // IncludePlayers specifies if the 'Include Players' toggle has been enabled, meaning players are also + // exported by the structure block. + IncludePlayers bool + // ShowBoundingBox specifies if the structure block should have its bounds outlined. A thin line will + // encapsulate the bounds of the structure if set to true. + ShowBoundingBox bool + // StructureBlockType is the type of the structure block updated. A list of structure block types that + // will be used can be found in the constants above. + StructureBlockType int32 + // Settings is a struct of settings that should be used for exporting the structure. These settings are + // identical to the last sent in the StructureBlockUpdate packet by the client. + Settings protocol.StructureSettings + // RedstoneSaveMode is the mode that should be used to save the structure when used with redstone. In + // Java Edition, this is always stored in memory, but in Bedrock Edition it can be stored either to disk + // or memory. See the constants above for the options. + RedstoneSaveMode int32 + // ShouldTrigger specifies if the structure block should be triggered immediately after this packet + // reaches the server. + ShouldTrigger bool + // Waterlogged specifies if non-air blocks replace water or combine with water. + Waterlogged bool +} + +// ID ... +func (*StructureBlockUpdate) ID() uint32 { + return packet.IDStructureBlockUpdate +} + +func (pk *StructureBlockUpdate) Marshal(io protocol.IO) { + io.UBlockPos(&pk.Position) + io.String(&pk.StructureName) + if proto.IsProtoGTE(io, proto.ID776) { + io.String(&pk.FilteredStructureName) + } + io.String(&pk.DataField) + io.Bool(&pk.IncludePlayers) + io.Bool(&pk.ShowBoundingBox) + io.Varint32(&pk.StructureBlockType) + protocol.Single(io, &pk.Settings) + io.Varint32(&pk.RedstoneSaveMode) + io.Bool(&pk.ShouldTrigger) + io.Bool(&pk.Waterlogged) +} diff --git a/legacyver/legacypacket/update_abilities.go b/legacyver/legacypacket/update_abilities.go new file mode 100644 index 0000000..10a5dc4 --- /dev/null +++ b/legacyver/legacypacket/update_abilities.go @@ -0,0 +1,23 @@ +package legacypacket + +import ( + "github.com/akmalfairuz/legacy-version/legacyver/proto" + "github.com/sandertv/gophertunnel/minecraft/protocol" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +// UpdateAbilities is a packet sent from the server to the client to update the abilities of the player. It, along with +// the UpdateAdventureSettings packet, are replacements of the AdventureSettings packet since v1.19.10. +type UpdateAbilities struct { + // AbilityData represents various data about the abilities of a player, such as ability layers or permissions. + AbilityData proto.AbilityData +} + +// ID ... +func (*UpdateAbilities) ID() uint32 { + return packet.IDUpdateAbilities +} + +func (pk *UpdateAbilities) Marshal(io protocol.IO) { + protocol.Single(io, &pk.AbilityData) +} diff --git a/legacyver/proto/ability.go b/legacyver/proto/ability.go new file mode 100644 index 0000000..d8312a7 --- /dev/null +++ b/legacyver/proto/ability.go @@ -0,0 +1,108 @@ +package proto + +import ( + "github.com/sandertv/gophertunnel/minecraft/protocol" +) + +// AbilityData represents various data about the abilities of a player, such as ability layers or permissions. +type AbilityData struct { + // EntityUniqueID is a unique identifier of the player. It appears it is not required to fill this field + // out with a correct value. Simply writing 0 seems to work. + EntityUniqueID int64 + // PlayerPermissions is the permission level of the player as it shows up in the player list built up using + // the PlayerList packet. + PlayerPermissions byte + // CommandPermissions is a set of permissions that specify what commands a player is allowed to execute. + CommandPermissions byte + // Layers contains all ability layers and their potential values. This should at least have one entry, being the + // base layer. + Layers []AbilityLayer +} + +// Marshal encodes/decodes an AbilityData. +func (x *AbilityData) Marshal(r protocol.IO) { + r.Int64(&x.EntityUniqueID) + r.Uint8(&x.PlayerPermissions) + r.Uint8(&x.CommandPermissions) + protocol.SliceUint8Length(r, &x.Layers) +} + +// ToLatest ... +func (x *AbilityData) ToLatest() protocol.AbilityData { + layers := make([]protocol.AbilityLayer, len(x.Layers)) + for i, layer := range x.Layers { + layers[i] = layer.ToLatest() + } + return protocol.AbilityData{ + EntityUniqueID: x.EntityUniqueID, + PlayerPermissions: x.PlayerPermissions, + CommandPermissions: x.CommandPermissions, + Layers: layers, + } +} + +// FromLatest ... +func (x *AbilityData) FromLatest(y protocol.AbilityData) AbilityData { + layers := make([]AbilityLayer, len(y.Layers)) + for i, layer := range y.Layers { + layers[i] = (&AbilityLayer{}).FromLatest(layer) + } + x.EntityUniqueID = y.EntityUniqueID + x.PlayerPermissions = y.PlayerPermissions + x.CommandPermissions = y.CommandPermissions + x.Layers = layers + return *x +} + +// AbilityLayer represents the abilities of a specific layer, such as the base layer or the spectator layer. +type AbilityLayer struct { + // Type represents the type of the layer. This is one of the AbilityLayerType constants defined above. + Type uint16 + // Abilities is a set of abilities that are enabled for the layer. This is one of the Ability constants defined + // above. + Abilities uint32 + // Values is a set of values that are associated with the enabled abilities, representing the values of the + // abilities. + Values uint32 + // FlySpeed is the default horizontal fly speed of the layer. + FlySpeed float32 + // VerticalFlySpeed is the default vertical fly speed of the layer. + VerticalFlySpeed float32 + // WalkSpeed is the default walk speed of the layer. + WalkSpeed float32 +} + +// Marshal encodes/decodes an AbilityLayer. +func (x *AbilityLayer) Marshal(r protocol.IO) { + r.Uint16(&x.Type) + r.Uint32(&x.Abilities) + r.Uint32(&x.Values) + r.Float32(&x.FlySpeed) + if IsProtoGTE(r, ID776) { + r.Float32(&x.VerticalFlySpeed) + } + r.Float32(&x.WalkSpeed) +} + +// ToLatest ... +func (x *AbilityLayer) ToLatest() protocol.AbilityLayer { + return protocol.AbilityLayer{ + Type: x.Type, + Abilities: x.Abilities, + Values: x.Values, + FlySpeed: x.FlySpeed, + VerticalFlySpeed: x.VerticalFlySpeed, + WalkSpeed: x.WalkSpeed, + } +} + +// FromLatest ... +func (x *AbilityLayer) FromLatest(y protocol.AbilityLayer) AbilityLayer { + x.Type = y.Type + x.Abilities = y.Abilities + x.Values = y.Values + x.FlySpeed = y.FlySpeed + x.VerticalFlySpeed = y.VerticalFlySpeed + x.WalkSpeed = y.WalkSpeed + return *x +} diff --git a/legacyver/proto/camera.go b/legacyver/proto/camera.go index 0eec059..e0b7e6c 100644 --- a/legacyver/proto/camera.go +++ b/legacyver/proto/camera.go @@ -41,6 +41,10 @@ type CameraPreset struct { // Radius is only used in a follow_orbit camera and controls how far away from the player the camera should // be rendered. Radius protocol.Optional[float32] + // MinYawLimit is the minimum yaw limit of the camera. + MinYawLimit protocol.Optional[float32] + // MaxYawLimit is the maximum yaw limit of the camera. + MaxYawLimit protocol.Optional[float32] // AudioListener defines where the audio should be played from when using this preset. This is one of the // constants above. AudioListener protocol.Optional[byte] @@ -95,6 +99,8 @@ func (x *CameraPreset) ToLatest() protocol.CameraPreset { ViewOffset: x.ViewOffset, EntityOffset: x.EntityOffset, Radius: x.Radius, + MinYawLimit: x.MinYawLimit, + MaxYawLimit: x.MaxYawLimit, AudioListener: x.AudioListener, PlayerEffects: x.PlayerEffects, AlignTargetAndCameraForward: x.AlignTargetAndCameraForward, @@ -123,6 +129,10 @@ func (x *CameraPreset) Marshal(r protocol.IO) { if IsProtoGTE(r, ID766) { protocol.OptionalFunc(r, &x.TrackingRadius, r.Float32) } + if IsProtoGTE(r, ID776) { + protocol.OptionalFunc(r, &x.MinYawLimit, r.Float32) + protocol.OptionalFunc(r, &x.MaxYawLimit, r.Float32) + } protocol.OptionalFunc(r, &x.ViewOffset, r.Vec2) if IsProtoGTE(r, ID729) { protocol.OptionalFunc(r, &x.EntityOffset, r.Vec3) diff --git a/legacyver/proto/creative.go b/legacyver/proto/creative.go new file mode 100644 index 0000000..5b80c3d --- /dev/null +++ b/legacyver/proto/creative.go @@ -0,0 +1,41 @@ +package proto + +import "github.com/sandertv/gophertunnel/minecraft/protocol" + +// CreativeItem represents a creative item present in the creative inventory. +type CreativeItem struct { + // CreativeItemNetworkID is a unique ID for the creative item. It has to be unique for each creative item + // sent to the client. An incrementing ID per creative item does the job. + CreativeItemNetworkID uint32 + // Item is the item that should be added to the creative inventory. + Item protocol.ItemStack + // GroupIndex is the index of the group that the item should be placed in. It is the index of the group in + // the CreativeContent packet previously sent to the client. + GroupIndex uint32 +} + +// ToLatest ... +func (x *CreativeItem) ToLatest() protocol.CreativeItem { + return protocol.CreativeItem{ + CreativeItemNetworkID: x.CreativeItemNetworkID, + Item: x.Item, + GroupIndex: x.GroupIndex, + } +} + +// FromLatest ... +func (x *CreativeItem) FromLatest(y protocol.CreativeItem) CreativeItem { + x.CreativeItemNetworkID = y.CreativeItemNetworkID + x.Item = y.Item + x.GroupIndex = y.GroupIndex + return *x +} + +// Marshal encodes/decodes a CreativeItem. +func (x *CreativeItem) Marshal(r protocol.IO) { + r.Varuint32(&x.CreativeItemNetworkID) + r.Item(&x.Item) + if IsProtoGTE(r, ID776) { + r.Varuint32(&x.GroupIndex) + } +} diff --git a/legacyver/proto/id.go b/legacyver/proto/id.go index 920d08d..9ef8cb4 100644 --- a/legacyver/proto/id.go +++ b/legacyver/proto/id.go @@ -3,6 +3,7 @@ package proto import "github.com/sandertv/gophertunnel/minecraft/protocol" const ( + ID776 = 776 // v1.21.60 ID766 = 766 // v1.21.50 ID748 = 748 // v1.21.40 ID729 = 729 // v1.21.30 diff --git a/legacyver/proto/item.go b/legacyver/proto/item.go new file mode 100644 index 0000000..4ddcbce --- /dev/null +++ b/legacyver/proto/item.go @@ -0,0 +1,92 @@ +package proto + +import ( + "github.com/sandertv/gophertunnel/minecraft/nbt" + "github.com/sandertv/gophertunnel/minecraft/protocol" +) + +// LegacyItemRegistryEntry is an item sent in the StartGame item table. It holds a name and a legacy ID, which is used to +// point back to that name. +type LegacyItemRegistryEntry struct { + // Name if the name of the item, which is a name like 'minecraft:stick'. + Name string + // RuntimeID is the ID that is used to identify the item over network. After sending all items in the + // StartGame packet, items will then be identified using these numerical IDs. + RuntimeID int16 + // ComponentBased specifies if the item was created using components, meaning the item is a custom item. + ComponentBased bool +} + +// Marshal encodes/decodes an LegacyItemRegistryEntry. +func (x *LegacyItemRegistryEntry) Marshal(r protocol.IO) { + r.String(&x.Name) + r.Int16(&x.RuntimeID) + r.Bool(&x.ComponentBased) +} + +// FromLatest ... +func (x *LegacyItemRegistryEntry) FromLatest(y protocol.ItemEntry) LegacyItemRegistryEntry { + x.Name = y.Name + x.RuntimeID = y.RuntimeID + x.ComponentBased = y.ComponentBased + return *x +} + +// ToLatest ... +func (x *LegacyItemRegistryEntry) ToLatest() protocol.ItemEntry { + return protocol.ItemEntry{ + Name: x.Name, + RuntimeID: x.RuntimeID, + ComponentBased: x.ComponentBased, + Version: 2, + } +} + +// ItemEntry is an item sent in the StartGame item table. It holds a name and a legacy ID, which is used to +// point back to that name. +type ItemEntry struct { + // Name if the name of the item, which is a name like 'minecraft:stick'. + Name string + // RuntimeID is the ID that is used to identify the item over network. After sending all items in the + // StartGame packet, items will then be identified using these numerical IDs. + RuntimeID int16 + // ComponentBased specifies if the item was created using components, meaning the item is a custom item. + ComponentBased bool + // Version is the version of the item entry which is used by the client to determine how to handle the + // item entry. It is one of the constants above. + Version int32 + // Data is a map containing the components and properties of the item, if the item is component based. + Data map[string]any +} + +// ToLatest ... +func (x *ItemEntry) ToLatest() protocol.ItemEntry { + return protocol.ItemEntry{ + Name: x.Name, + RuntimeID: x.RuntimeID, + ComponentBased: x.ComponentBased, + Version: x.Version, + Data: x.Data, + } +} + +// FromLatest ... +func (x *ItemEntry) FromLatest(y protocol.ItemEntry) ItemEntry { + x.Name = y.Name + x.RuntimeID = y.RuntimeID + x.ComponentBased = y.ComponentBased + x.Version = y.Version + x.Data = y.Data + return *x +} + +// Marshal encodes/decodes an ItemEntry. +func (x *ItemEntry) Marshal(r protocol.IO) { + r.String(&x.Name) + if IsProtoGTE(r, ID776) { + r.Int16(&x.RuntimeID) + r.Bool(&x.ComponentBased) + r.Varint32(&x.Version) + } + r.NBT(&x.Data, nbt.NetworkLittleEndian) +} diff --git a/legacyver/protocol.go b/legacyver/protocol.go index 98fae62..b49b260 100644 --- a/legacyver/protocol.go +++ b/legacyver/protocol.go @@ -20,6 +20,10 @@ func init() { for pkId, cur := range packetPoolClient { packetPoolClient[pkId] = convertPacketFunc(pkId, cur) } + + for pkId, cur := range packetPoolServer { + packetPoolServer[pkId] = convertPacketFunc(pkId, cur) + } } func convertPacketFunc(pid uint32, cur func() packet.Packet) func() packet.Packet { @@ -86,6 +90,22 @@ func convertPacketFunc(pid uint32, cur func() packet.Packet) func() packet.Packe return func() packet.Packet { return &legacypacket.StartGame{} } case packet.IDCodeBuilderSource: return func() packet.Packet { return &legacypacket.CodeBuilderSource{} } + case packet.IDItemRegistry: + return func() packet.Packet { return &legacypacket.ItemRegistry{} } + case packet.IDStructureBlockUpdate: + return func() packet.Packet { return &legacypacket.StructureBlockUpdate{} } + case packet.IDBossEvent: + return func() packet.Packet { return &legacypacket.BossEvent{} } + case packet.IDCameraAimAssistPresets: + return func() packet.Packet { return &legacypacket.CameraAimAssistPresets{} } + case packet.IDCommandBlockUpdate: + return func() packet.Packet { return &legacypacket.CommandBlockUpdate{} } + case packet.IDCreativeContent: + return func() packet.Packet { return &legacypacket.CreativeContent{} } + case packet.IDUpdateAbilities: + return func() packet.Packet { return &legacypacket.UpdateAbilities{} } + case packet.IDClientCheatAbility: + return func() packet.Packet { return &legacypacket.ClientCheatAbility{} } default: return cur } @@ -309,7 +329,7 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [ GameType: pk.GameType, EntityMetadata: pk.EntityMetadata, EntityProperties: pk.EntityProperties, - AbilityData: pk.AbilityData, + AbilityData: (&proto.AbilityData{}).FromLatest(pk.AbilityData), EntityLinks: links, DeviceID: pk.DeviceID, BuildPlatform: pk.BuildPlatform, @@ -441,7 +461,15 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [ pk.GameVersion = p.ver pk.BaseGameVersion = p.ver + items := make([]proto.LegacyItemRegistryEntry, len(conn.GameData().Items)) + for i, it := range conn.GameData().Items { + items[i] = (&proto.LegacyItemRegistryEntry{}).FromLatest(it) + } + + items = p.itemTranslator.DowngradeLegacyItemRegistry(items) + pks[pkIndex] = &legacypacket.StartGame{ + Items: items, EntityUniqueID: pk.EntityUniqueID, EntityRuntimeID: pk.EntityRuntimeID, PlayerGameMode: pk.PlayerGameMode, @@ -505,7 +533,6 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [ Time: pk.Time, EnchantmentSeed: pk.EnchantmentSeed, Blocks: pk.Blocks, - Items: pk.Items, MultiPlayerCorrelationID: pk.MultiPlayerCorrelationID, ServerAuthoritativeInventory: pk.ServerAuthoritativeInventory, GameVersion: pk.GameVersion, @@ -527,6 +554,75 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [ Category: pk.Category, CodeStatus: pk.CodeStatus, } + case *packet.ItemRegistry: + items := make([]proto.ItemEntry, len(pk.Items)) + for i, it := range pk.Items { + items[i] = (&proto.ItemEntry{}).FromLatest(it) + } + pks[pkIndex] = &legacypacket.ItemRegistry{ + Items: items, + } + case *packet.StructureBlockUpdate: + pks[pkIndex] = &legacypacket.StructureBlockUpdate{ + Position: pk.Position, + StructureName: pk.StructureName, + FilteredStructureName: pk.FilteredStructureName, + DataField: pk.DataField, + IncludePlayers: pk.IncludePlayers, + ShowBoundingBox: pk.ShowBoundingBox, + StructureBlockType: pk.StructureBlockType, + Settings: pk.Settings, + RedstoneSaveMode: pk.RedstoneSaveMode, + ShouldTrigger: pk.ShouldTrigger, + Waterlogged: pk.Waterlogged, + } + case *packet.BossEvent: + pks[pkIndex] = &legacypacket.BossEvent{ + BossEntityUniqueID: pk.BossEntityUniqueID, + EventType: pk.EventType, + PlayerUniqueID: pk.PlayerUniqueID, + BossBarTitle: pk.BossBarTitle, + FilteredBossBarTitle: pk.FilteredBossBarTitle, + HealthPercentage: pk.HealthPercentage, + ScreenDarkening: pk.ScreenDarkening, + Colour: pk.Colour, + Overlay: pk.Overlay, + } + case *packet.CameraAimAssistPresets: + pks[pkIndex] = &legacypacket.CameraAimAssistPresets{ + CategoryGroups: pk.CategoryGroups, + Presets: pk.Presets, + Operation: pk.Operation, + } + case *packet.CommandBlockUpdate: + pks[pkIndex] = &legacypacket.CommandBlockUpdate{ + Block: pk.Block, + Position: pk.Position, + Mode: pk.Mode, + NeedsRedstone: pk.NeedsRedstone, + Conditional: pk.Conditional, + MinecartEntityRuntimeID: pk.MinecartEntityRuntimeID, + Command: pk.Command, + LastOutput: pk.LastOutput, + Name: pk.Name, + FilteredName: pk.FilteredName, + ShouldTrackOutput: pk.ShouldTrackOutput, + TickDelay: pk.TickDelay, + ExecuteOnFirstTick: pk.ExecuteOnFirstTick, + } + case *packet.CreativeContent: + items := make([]proto.CreativeItem, len(pk.Items)) + for i, it := range pk.Items { + items[i] = (&proto.CreativeItem{}).FromLatest(it) + } + pks[pkIndex] = &legacypacket.CreativeContent{ + Groups: pk.Groups, + Items: items, + } + case *packet.UpdateAbilities: + pks[pkIndex] = &legacypacket.UpdateAbilities{ + AbilityData: (&proto.AbilityData{}).FromLatest(pk.AbilityData), + } } } @@ -705,7 +801,7 @@ func (p *Protocol) upgradePackets(pks []packet.Packet, conn *minecraft.Conn) []p GameType: pk.GameType, EntityMetadata: pk.EntityMetadata, EntityProperties: pk.EntityProperties, - AbilityData: pk.AbilityData, + AbilityData: pk.AbilityData.ToLatest(), EntityLinks: links, DeviceID: pk.DeviceID, BuildPlatform: pk.BuildPlatform, @@ -897,7 +993,6 @@ func (p *Protocol) upgradePackets(pks []packet.Packet, conn *minecraft.Conn) []p Time: pk.Time, EnchantmentSeed: pk.EnchantmentSeed, Blocks: pk.Blocks, - Items: pk.Items, MultiPlayerCorrelationID: pk.MultiPlayerCorrelationID, ServerAuthoritativeInventory: pk.ServerAuthoritativeInventory, GameVersion: pk.GameVersion, @@ -919,6 +1014,65 @@ func (p *Protocol) upgradePackets(pks []packet.Packet, conn *minecraft.Conn) []p Category: pk.Category, CodeStatus: pk.CodeStatus, } + case *legacypacket.BossEvent: + pks[pkIndex] = &packet.BossEvent{ + BossEntityUniqueID: pk.BossEntityUniqueID, + EventType: pk.EventType, + PlayerUniqueID: pk.PlayerUniqueID, + BossBarTitle: pk.BossBarTitle, + FilteredBossBarTitle: pk.FilteredBossBarTitle, + HealthPercentage: pk.HealthPercentage, + ScreenDarkening: pk.ScreenDarkening, + Colour: pk.Colour, + Overlay: pk.Overlay, + } + case *legacypacket.CommandBlockUpdate: + pks[pkIndex] = &packet.CommandBlockUpdate{ + Block: pk.Block, + Position: pk.Position, + Mode: pk.Mode, + NeedsRedstone: pk.NeedsRedstone, + Conditional: pk.Conditional, + MinecartEntityRuntimeID: pk.MinecartEntityRuntimeID, + Command: pk.Command, + LastOutput: pk.LastOutput, + Name: pk.Name, + FilteredName: pk.FilteredName, + ShouldTrackOutput: pk.ShouldTrackOutput, + TickDelay: pk.TickDelay, + ExecuteOnFirstTick: pk.ExecuteOnFirstTick, + } + case *legacypacket.CreativeContent: + items := make([]protocol.CreativeItem, len(pk.Items)) + for i, it := range pk.Items { + items[i] = it.ToLatest() + } + pks[pkIndex] = &packet.CreativeContent{ + Groups: pk.Groups, + Items: items, + } + case *legacypacket.ItemRegistry: + items := make([]protocol.ItemEntry, len(pk.Items)) + for i, it := range pk.Items { + items[i] = it.ToLatest() + } + pks[pkIndex] = &packet.ItemRegistry{Items: items} + case *legacypacket.StructureBlockUpdate: + pks[pkIndex] = &packet.StructureBlockUpdate{ + Position: pk.Position, + StructureName: pk.StructureName, + FilteredStructureName: pk.FilteredStructureName, + DataField: pk.DataField, + IncludePlayers: pk.IncludePlayers, + ShowBoundingBox: pk.ShowBoundingBox, + StructureBlockType: pk.StructureBlockType, + Settings: pk.Settings, + RedstoneSaveMode: pk.RedstoneSaveMode, + ShouldTrigger: pk.ShouldTrigger, + Waterlogged: pk.Waterlogged, + } + case *legacypacket.UpdateAbilities: + pks[pkIndex] = &packet.UpdateAbilities{AbilityData: pk.AbilityData.ToLatest()} } } return pks diff --git a/legacyver/v766.go b/legacyver/v766.go index 4ca2308..99aae65 100644 --- a/legacyver/v766.go +++ b/legacyver/v766.go @@ -2,12 +2,14 @@ package legacyver import ( _ "embed" + "github.com/akmalfairuz/legacy-version/internal/chunk" + "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) const ( // ItemVersion766 ... - ItemVersion766 = 231 + ItemVersion766 = 221 // BlockVersion766 ... BlockVersion766 int32 = (1 << 24) | (21 << 16) | (50 << 8) ) @@ -20,6 +22,15 @@ var ( //go:embed data/block_states_766.nbt blockStateData766 []byte - itemMappingLatest = mapping.NewItemMapping(itemRuntimeIDData766, requiredItemList766, ItemVersion766, false) - blockMappingLatest = mapping.NewBlockMapping(blockStateData766) + itemMapping766 = mapping.NewItemMapping(itemRuntimeIDData766, requiredItemList766, ItemVersion766, false) + blockMapping766 = mapping.NewBlockMapping(blockStateData766) ) + +func New766() *Protocol { + return &Protocol{ + ver: "1.21.50", + id: proto.ID766, + blockTranslator: NewBlockTranslator(blockMapping766, latestBlockMapping, chunk.NewNetworkPersistentEncoding(blockMapping766, BlockVersion766), chunk.NewBlockPaletteEncoding(blockMapping766, BlockVersion766), false), + itemTranslator: NewItemTranslator(itemMapping766, itemMappingLatest, blockMapping766, blockMappingLatest), + } +} diff --git a/legacyver/v776.go b/legacyver/v776.go new file mode 100644 index 0000000..6c8365d --- /dev/null +++ b/legacyver/v776.go @@ -0,0 +1,25 @@ +package legacyver + +import ( + _ "embed" + "github.com/akmalfairuz/legacy-version/mapping" +) + +const ( + // ItemVersion776 ... + ItemVersion776 = 241 + // BlockVersion776 ... + BlockVersion776 int32 = (1 << 24) | (21 << 16) | (60 << 8) +) + +var ( + //go:embed data/item_runtime_ids_776.nbt + itemRuntimeIDData776 []byte + //go:embed data/required_item_list_776.json + requiredItemList776 []byte + //go:embed data/block_states_776.nbt + blockStateData776 []byte + + itemMappingLatest = mapping.NewItemMapping(itemRuntimeIDData776, requiredItemList776, ItemVersion776, false) + blockMappingLatest = mapping.NewBlockMapping(blockStateData776) +) diff --git a/mapping/item.go b/mapping/item.go index e3babde..1dc34d0 100644 --- a/mapping/item.go +++ b/mapping/item.go @@ -12,6 +12,7 @@ type Item interface { // ItemNameToRuntimeID converts a string ID to an item runtime ID. ItemNameToRuntimeID(string) (int32, bool) RegisterEntry(string) int32 + RegisterEntryRID(string, int32, uint8) Air() int32 ItemVersion() uint16 } @@ -22,13 +23,16 @@ type DefaultItemMapping struct { itemRuntimeIDsToNames map[int32]string // itemNamesToRuntimeIDs holds a map to translate item string IDs to runtime IDs. itemNamesToRuntimeIDs map[string]int32 - airRID int32 - itemVersion uint16 + // itemRuntimeIDToVersion holds a map to translate item runtime IDs to versions. + itemRuntimeIDToVersion map[int32]uint8 + airRID int32 + itemVersion uint16 } func NewItemMapping(itemRuntimeIDData []byte, requiredItemList []byte, itemVersion uint16, direct bool) *DefaultItemMapping { itemRuntimeIDsToNames := make(map[int32]string) itemNamesToRuntimeIDs := make(map[string]int32) + itemRuntimeIDToVersion := make(map[int32]uint8) var airRID *int32 if direct { @@ -46,8 +50,9 @@ func NewItemMapping(itemRuntimeIDData []byte, requiredItemList []byte, itemVersi } } else { var m map[string]struct { - RuntimeID int16 `json:"runtime_id"` - ComponentBased bool `json:"component_based"` + RuntimeID int16 `json:"runtime_id"` + ComponentBased bool `json:"component_based"` + Version *uint8 `json:"version"` } if err := json.Unmarshal(requiredItemList, &m); err != nil { panic(err) @@ -60,6 +65,9 @@ func NewItemMapping(itemRuntimeIDData []byte, requiredItemList []byte, itemVersi itemNamesToRuntimeIDs[name] = rid itemRuntimeIDsToNames[rid] = name + if data.Version != nil { + itemRuntimeIDToVersion[rid] = *data.Version + } } } @@ -67,7 +75,7 @@ func NewItemMapping(itemRuntimeIDData []byte, requiredItemList []byte, itemVersi panic("couldn't find air") } - return &DefaultItemMapping{itemRuntimeIDsToNames: itemRuntimeIDsToNames, itemNamesToRuntimeIDs: itemNamesToRuntimeIDs, itemVersion: itemVersion} + return &DefaultItemMapping{itemRuntimeIDsToNames: itemRuntimeIDsToNames, itemNamesToRuntimeIDs: itemNamesToRuntimeIDs, itemRuntimeIDToVersion: itemRuntimeIDToVersion, airRID: *airRID, itemVersion: itemVersion} } func (m *DefaultItemMapping) ItemRuntimeIDToName(runtimeID int32) (name string, found bool) { @@ -84,6 +92,13 @@ func (m *DefaultItemMapping) ItemNameToRuntimeID(name string) (runtimeID int32, return rid, ok } +func (m *DefaultItemMapping) ItemRuntimeIDToVersion(runtimeID int32) (version uint8, found bool) { + defer m.mu.Unlock() + m.mu.Lock() + v, ok := m.itemRuntimeIDToVersion[runtimeID] + return v, ok +} + func (m *DefaultItemMapping) RegisterEntry(name string) int32 { defer m.mu.Unlock() m.mu.Lock() @@ -96,6 +111,16 @@ func (m *DefaultItemMapping) RegisterEntry(name string) int32 { return nextRID } +func (m *DefaultItemMapping) RegisterEntryRID(name string, rid int32, version uint8) { + defer m.mu.Unlock() + m.mu.Lock() + if _, ok := m.itemNamesToRuntimeIDs[name]; !ok { + m.itemNamesToRuntimeIDs[name] = rid + m.itemRuntimeIDsToNames[rid] = name + m.itemRuntimeIDToVersion[rid] = version + } +} + func (m *DefaultItemMapping) Air() int32 { defer m.mu.Unlock() m.mu.Lock()