Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save coolaj86/b28084f192e4d4e147da5fe51ace4a86 to your computer and use it in GitHub Desktop.
Save coolaj86/b28084f192e4d4e147da5fe51ace4a86 to your computer and use it in GitHub Desktop.
AJ's Code Snippets for Thumbnail Backgrounds
// XPub to Public Parts
wallet.addrFromXPubKey = async function (xpubKey, index) {
let derivedRoot = HdKey.fromExtendedKey(xpubKey);
return await wallet.addrFromXPubRoot(derivedRoot, index);
};
wallet.addrFromXPubRoot = async function (derivedRoot, index) {
let derivedChild = derivedRoot.deriveChild(index);
let addrFromXPubKey = await b58c.encode({
version: myCoin.pubKeyHashVersion,
pubKeyHash: derivedChild.pubKeyHash.toString("hex"),
});
return addrFromXPubKey;
};
// QR
wallet.qrFromXPubKey = async function (xpubKey, index, amount, opts) {
let addr = await wallet.addrFromXPubKey(xpubKey, index);
return wallet.qrFromAddr(addr, amount, opts);
};
wallet.qrFromAddr = function (addr, amount, opts) {
let content = addr;
if ("dash" === myCoin.name && addr.length <= 36) {
let search = "";
if (amount) {
search = `amount=${amount}`;
}
content = `dash://${addr}?${search}`;
}
if ("ascii" === opts?.format) {
return Qr.ascii(content, { indent: opts.indent ?? 4 });
}
return Qr.svg(content);
};
// Package-Scoped Types
// Rather than creating class files, you can define types here and annotate them
// elsewhere as needed (including "Declaration Merges" in @types/foo/index.d.ts).
//
// Note:
// - {...} surround types
// - [...] surround optional properties
// - {Record<string, any>} for a untyped object/map/dict
// - {Array<Thing>} for a typed array
// - {x | y | z} (pipe) for allowing multiple types
// - {Foo & Bar} (ampersand) for combining multiple types
// - Use `/** @type Thing */` above a declaration to "cast" it
//
/**
* @typedef {Object} User
* @property {string} given_name
* @property {string} family_name
* @property {string} [favorite_movie]
* @property {string} [favorite_book]
* @property {Array<User>} friends
* @property {Record<string,any> | null} [stuff]
*/
// When correctly-defined JavaScript inheritance doesn't match up with
// TypeScript's super strict view of a class or whatever, you can hacky-do
// it by creating a type alias, or union of types or interfaces, etc.
// Example: a database model looks like user, but also has functions from
// a base Model class, and we have to merge them together because it would
// be too tedious and/or laborious to do it the "correct" way just to appease
// tsserver.
a~[d:.V2b]XD@$)g5X/s|o:Q/:)+0)MoCGNRAe$+ZRt({[fffH{Qd,08iz<KyQgbc,QmBL4L"iKJ?YG2z2[Qw!LDpH%%O4&t^(l2+G\u~)"!Ai;CuFt3C|(:
N=<[g[kN!BW%D)dO^\p46cS$F&3gQPC>I`B9{@b)?fX1|\(rG/}{d[0'o0i+/3G%SgLY>px2mnI)W]0Rlb7l&6MG~iV!/2FRu<R[zOBV1vDT[GQm''sc"9J1
aXt[68h35Jp,zejNp%73JCcE)XB{!HuE\G8$vif&'3:rE>X\L#\#uE;t4u:.RpJ?R;?;`&MPlW1%y)6XdKx7y|&U``lMQV=n;y"r!unr0mBG4^0)<~2,&"3V
D:ra6a.ZOU]Mqfi/:3qFQ?>sHrChQ.yO+cBzuE3)`0NoNcnE1D#)hE'#(T{KDZpluwR7)"eHmZ?8<.w+uM%=@E&\L1kmJ]'CLI]6ww}\5$qjn*g)viaM@Xk)
ot)nu:j`Ow8(*ZsGNim@W{Ue;g|,uq"yYt*].5MdWJ{wt$WMP/@J=1cc6^I[^[JM7\r=uMRa:Q#p86Iqcl:C;fvq04KiDnv.`7(aDQMb,wJ4)'u^?sU)Fye.
))3|0\7pf)\6>]svyHz}kOo)ctlO?!our[f/&};#RgqZ#G\ItAMZG[i]qmZe:HB$vR^d3k/S.hj"(aBMBsZ;pY~+W.N<a[yo>X\sZ]?d|6&D[H{AD`XzNj*)
iku$.W)a&,9~FUdAr8g>)^+'V<+i)X.wbNAyIeR\:58(7mueUg"LMjygrwjY/[OU5p|:1O+cc3e=gLd.#g]))D)>SySB|?"xI\<yh+Ib$Mm8i)1T"l8'`DLJ
:~'?:?1]Zr.\:~<!JY4oFB@E>F#@%lb=j:&)*lKq6W$UhOxzKtNfCH=#ew1^%ho;Fc'fuez>FX8e6IB%Wpsdh{vf;&NAUcAt/7,rsh,/6pA9&oqFeqZ=N/p`
O.r+tc/2VVbhy)YoNCk$EdN&\O1Tj/[@:c9ff95)PNfV#F9Y=E8ti9QkM!o)f~xg@.)g)65Jth*GRw]>t0lnw@D8XYlj{%gC6Z&o6QnM?Iy&r^P`fe/)dgW[
$X}0RhE6{b2nU&0ypwo\Modx/0sQj/&N!nBM/w,?H,vQ~sM&/myK]wT}(SFc!'y/N>o3M)U;%gxv\.f.K{Dp;Y*&'"zqC#o]$Vi<ly}q>8$*MRCTlLG]RI"{
Zes`>^sV/?lL*aN(I{Z^%<cu*'=Z6PBL9?S(4]>)67![Q#oOPNNgY5j6[ql)MB&)"k'{>~m87|by+0r*EJ/yZsP%Bm$;c|'s)*C&b*5IdwY3@p/ZJ'ut($\@
=))mmK'+*^6b2N^1:+ZKY)YUdQqMD)wH?Gla^f9p4(Suo`s+vl~M;y4e/#9Tz!bs/P)(saW+vd"k#(cm"X<c|Q?Hg)\#?tU9Xf1IAY;&+OA@|)w)+/n'\Qn.
\Z}*>$=|:Sel$@?iP'm".~=64A(.k,Q@*x*syS>q}T*G0m.\/&:M[^E;^J"Vf\E]VQzbr,oRYOucPea7<:mt?d\0#Rrp4B8ys$!'%2J5X(x|=cd`rrNlLJ.7
"Dt#qr$QS)0fIX8iN\=Np;FR[)KE3qkgyCpO?`Z`[<E'8D&+@TTO,NmAXS|aLF)S03PXHSQj,,I$;}fqC6BO/EyI9fHX6r=}1b5mB6Q)<beZ$}Y6`^~RnB6/
ZBs'G+STw~RG5\{8.l&2ji*4dyhAFi!>yCJ*uu@uO8Kx4Blvk%w{pN"#b|$RfX/N5``1+|.qxF>8ET2qYh41Q^{5jlUze(c!Uz]%>,o1/3XaI;3>bYv)U,L}
#BMm`n^Zz!~ZR=Gj%7QwD)WI,;o]IFrW)OHmi(?3$q99;I\{uRf*8Q),k$Kq]y7,2s3sK6m"&e3~{h#'jUk)fz62X(~FK{Uu6nS~E,b+y>oG:N.%&bEmOwS&
w,F)ViX6wg"<*$nx:P0)})2&wbj;Jp4i~KLULoIE)q{WWaK)k#1WYaaNfGeHL|&@IN\ut}Hv)hlN)3PIZ%VhBCyg;H,S'xr)H2Kk5MV'Zl%/6N9$vV\MO5>E
0*l@'rAl@dqd3U{fH<)QDU)=2NR<xoyP\3f5!f3R8i[.x`vTo#J3Z*/{b8w@(wp+Y%{)wZ'OX<'{K?Q?'aM\D^fqo/?Quysg94>.e~0g|W1:(lX7N{JHi+L*
?rY\G^!bS*zLBM0ko2L#EHf/:Gh*b*P6ekg2aQys42Y=nLEp$Ity/V,||M,"9CmMx)o4Uf[7h~k)HTYPdezzjW.}FQmU9n(P]39L.):DPrB*)}R)SR*yq'Q\
oXN14s=bAG<Ah[O/WW%4gZN)8{g;ZX@><+zj:S2Ph`Xg2PI::5t?z44idgPP&C(nzJDbAG\!i3+eybRz;)N=h|D=h41!}A%LS2p7#r[DXG5.%dY>9l~,8Z9^
)Es|k,yJ/"5clh)drJFur!,43JYk`6HNU^bO?TyqY3|p`S^a"N9j6s,~:@jc;3}@RxXNp:U`f1~(Q0C=0h!]7v1L/gd:c1N$L*\YC\L$&53zZAKybAYO|'>$
tIf:1a"5V9j"B'HxSoVKh"pZ)TKM>y>cW/hhV/'.Xe^d`.ig%q1/Oh!]LU{p=4*RstG/0DlePd/NAjKs^"3Lx[>0;tvm>#b$#Bdj%9D/h]k'FijfAhE1q]u`
K`klcz*h\GrJTrggz8c^;^nSI4oADlgb^5/j"U>{A|1?Vf$a2vELe.]^wqOUx5cI;&rI1P\efHJ)<$W@}@0]]k&oA+.XN9A$QRCGY'Xi/2F!]*j%P4/DVs)d
BW{)fc3.e=p9t+uGlO%"{7@'Sv4~1e3Vxuk.V&Hd;gU@Q0Y?.@s#c!8(]V&cm+&iC'7E#OPEry,&rIXM{!={'Yr0T7Mz2/)pT5U@EQ5&&~nb!Upeg&?n;ZE~
HNw%{?d)3C@J)vM|[+zwWZ(V/*7q$[J)m??TtF1Eb~qcjIDI2rUO/il>'ITJQ<([y(}I,s~4QQ7vT<t~p%'Z]4"=k0$Ym./Zgx+vk5B~lP,X+\rmlGsRPI8b
.NFeBQ1klB^@Y0t@8nLtn\}LTV7&!&P)2:9y4~Wfon[kA/}MI<^T9=g!rm02y)xjR{z,+~VnAt##A\DuOYtS0^.tx/NhBI|*.MAql=&Z=)8t!#t6H$MJ2Qd5
.c3QZoGv7V,/L/^EciOP0jE|T4f!l]:b=:q7)OVw9;1s{pp89({M)&@s9>dJyG^7GJ"!1]qpj,BcQ)+!])<\#jv`9#@=Ki6)VdX?I6Cw"M^0%u#I9jb5bfJp
1.nN;bLf[uI\Kf)ND]%AsV't;:A@sbN(;[Ae12X/r\Jkn)B?V?cSzX*8cK0yTixwV|x"]F%f<NYvFrFTFCg<keD}<)+=>kzYU\JRwLSY)rJ(E%I"wH^<{KC"
sH?JDCPkMW/d)OYwL%HaZTO2(%')~1eX9XUgprt{,)l`9g[)<0\D]oO&~tw2)lq$|3j^;$th&Ay5JUoyaq4?$O;dL)+&HrLyJ{<RV?4emFGa>e";7:*F{/Gj
eR)0'Vg2ba/Y9oS1jv;H!615OvD%e8jF*'ne!{<g/T,'UFKorF<>+6T[r3mu)C[!4~`R7Qq%FF\9Ze)1)*'q>/n)G{{17eZKKp.&QQIzzlqszn&Kb{R,Rt"4
"eZo@,YM"pX2*xV/+<6EPD\Hr5vfG1"DhJBa`p:IQ)lAs\%hV`5VkT#QkVo{2L(,d#$|EEORk.dFGcPC?Y|bLz1w5!z%6#P6HxUI9)=BQVUXU9<DwO{IVI3$
(a)t&~l:Ro+g:*lSd0&=vSW;!qMdLlQ)G,eZMRP/}mywwWHMwTM~1S{vcwz8og7c9bV4Wt"7+]5uh:qTOCeQQOjv9Bwba2oDqDNs5m9!9}p:ZQBZM)KEZ%6/
5^fML727Rez:Qiw'v7}fA0|.r=FENOAxG"a!:17)Y&5azP&o)y(qdQH5GHrAlZ)]%){nM^vl;>%K;d[embdJ(TF[WGFqR!`Cf7Z#!(Ps$4L]@Jg?~]K$^6oG
f%6:zPzO64L/o?EG[CLXE<Mm@gKO8S[MJejk0B*^)7fPo4H=#@)#+Db<qzh&{(5^g<)p:|t+z0j;aIj^b`mLu#D;pheg{9r+3v<`|V>]K(Wxde|E')b9Zz!H
>(N'#/XdAK,o*G\+|uQ0,D8k^T!olQ,G9"3Zt2Q*V&QJFO#*6TR)E,>')#G{51A)[=CPFjlzc9i&dcL;)#sQBhtIt*61?~n'?,U\XI>6T7E5rM;fUYIdFKW{
@4vITRQdMrKT7a%h?>3{y7;U)}v)\G/nuB3H7e01M#'wd/'4>rA'p}$fb."56]lx!|t}/13;blKRo:^CT'QIlw6v1)I`IhuFI?/#^Y}=@D}a6|\1;@}J8q)Y
?Qa6#/;,M%MO})O2^[D>W;P"w64We#I`]O|j;{i?Bkw'L~qLp^dGri7?!w>H/8)ID;Mz]c<|`j.dGyS$%v*mA\"S.48GXRRpX,o0v^z)9i;6?%)u~1T#H!Oj
"ja6<PmK3t`qDz%ms(~Cv)@P;J+owGdA{g))MUQ$3Rr%};Txx1q':PczXP*y|t)^*d>9~4PFR;fTm4rT6~,)ItA:*GAiZaUnfG~..gRbx:6b;+DNJtXudQ`^
E.jIdE+1j^T0n!,=EuGoj7wTN|*p>)8K:E`gi|grp@"e$wRZM}[7oWCP~TIf]}Cia,a)[bSVB=Z&D5bocp(q''$gz=MP6UK{wH,F[ox<iL'S+v"8N}fzG<qx
=].#pPLW>,<KQ>2ckQ\26CcfnnErAy~"\Qgj"LC@OrB@Ml|3rL1&;m/6=~h8')UJpu{Q?EFLa\{%y;7i;c7;*UacJ1/493PFUZa8%L!'o09\%^8ATv`gQUPP
?n(kj*I*}j@3Kud$}:`GJrnw<DCy~p52;Z;aQn|F$EQ(;wUtSC=f\2YR"):C!<x@cXV,,07>B]IHZ3E?1D=LTMNtt7)N?&Bf]<nXn`IJ1SOdGdxbyv9+U^8c
zcS9@)u)v|GOtV+MW.Tk)49lzgU,7Per;)WI2pDlRogS57`v4ajFk]79Qzl&"S.(WY:>LG9c4K/q<*BrO)tD/4}Nc5?7^W~FvdTqZY9=*C5BjL&S3)lXmP4L
50R\"DarV~n:MmB/2Mb0/#[9DC(yR)1*6ly&N0HxPD9[N>>lq+T&@%?qv6}%^A{:85)30+G=a5(`4bh@.dhAh~4,*qK/h`p{u{NiZrE44uVfm3Gj7}kKW:XF
3m+puO@S3{jW%8$ZRMfa<NK+}W$33=TG!FVU)]aK11PV`lTe^MF%D!os6x|%n`nGtXcm%5P8N`PloCs>Vl`"<O}>3O,/=w]!$@y~tv|isO~'d(p):%`)S5uc
2)s5e`7kT49]2WZ)DG.w$D[I0eK.">G%\I!2[cFi|^|JkpuMCzIN|dgMZgWR06o&6/6!)XLf8f`E1:pv=#&bKi[Q$@](\)vCN/MZu3?}:SA9>dgiUa^7MR)Z
pD\Yae>l2\!Y,)<qmznaEC"]%phZbWXH/t|R&)z<;L9i[KUk8;X6]y,[)LJ^R5B[5svih$aZf;$5$/R`tweVsfd&EkJf!A6*9}KJXv~TWO1;jcfy&]{'kbtR
)m|uKpQRGB:I~?Ui6IRh)+SIA)r7EUE%X>YI=fE*P7q.`*`k5YZr\u$d.RCj*ZWG$}f!~%iL6:IA9\3Xh%I(:;:D19jFt)voOD0?^F*W1>0yQSWPD?@z@:)j
b)a2MI$,$2fDf)rqZ()lk)lQ)=dLhfH3davbo=yOaZXNahxf%8pn8>xNQmjvWZimF5d$qQNyuVW3"E|wC}"Q(O&9SY1TycdRv[)>B=jbpyQ*7bVBz8k$(7])
Z)UM!XkL([&~LA}[:%'C4[zxKc5):lNncNef&3X8pb4={c]mNB\u:k/]UBj@VNgP\[SgmM7/9Kl&n.9NM}$HI6W}u/K.Sz[Q&kB7TnF1oO+)W@xp{/7kWoNg
#>]]r]Hb9*+B0Q,gU*.@Z4GXQmQgg$Y$r=FZ!@Q1wDj4<fz9;2>6]\*b$){>VA*Eu0Xd^aABo;zw>sL>)If00oI07LR7;)K?LsVl&Og=$PlwxaJ&iul/rHZ'
uau@6kc&lrqX9e5+Vqcz{m/nJx{')&)MaNabi@Q1?%8A2%?wcCya.sZ3JDY)]dm5bJK$rG5w.lK&d=zoPxc.Pw<ns#*T=s~@yFlP5wLt%),|3Hifu.qsvcf#
v9h{:1N3icH{whlYj}r~Y@ZqT0on0Fq(poLY>v+zB}#kFw:+%L#NrJh7&iT]BS<(Izt$Vb"=Ny#/F8/6WRoq&VcV$=.x.od!$=y<f/@I7ld<ZJp~5vt6)8l;
f7nwINU+TU#0h$W#knd,\?Yx/Ij=Kt=4R8mCl)Slyp2Pm)kpxf95lw!pq@;o~|~)R[`*"#;];(xB3H+GjuAG4sh3fBT:kXuU:&2~N)BWv(J>{W/%?%S9A|M2
)'lahf6+e+uH,T&NW6C>dv`[B<N\Dxl;&fv?gA>1o=ok&/r\5ZEP*t$904V.72VyWL=)B*tefpARaDu`2kDu'Uy5qyN/JF.&;#awr4)~|o'&Gsb(vbn)Pb$%
8ofKL#xZv\0{"jGB""f[<zDuy/d#s':EbVAvGlJEp*8P(D"}:I;uRz3o~d]y+Ez(bz(oK>B8j6k[}oZH/A];k>7\&4ZiL^EC6!'b:[nwspQZ4bgmpqcrdIT7
)j&`1JO7CQVD\5zllz90f{~1~SEa1+jO>Q?K^aBvVTh:?o#uA.0)+Mmw:As,bx;4aJ@%[%J'y[lh+BY<&$oBPoK#OU2=YV4OXu)9+#!44fENXjg#dh/k5CaI
]I`K?}qs9'W5<VX!W:|n,Ml8GQ6C%@a?n/x)gbK7t0p`t43)\86m2`EcG(.5l\Zj%dl8}7b5830C,)PfL{"Ea[oK/"?b)>w|eQ%ElyK)G\*h,(pWD8nLx&lV
J$p$N'!&)p=f{=;?*?zaAY>3%]Avmjw|U7*KhkSZBdnE;dZu:p>M*)>luj&`[#p[%,q'/$g$#wXcAQn}t14(]yIegfh,)MLN)b$ez)/XL|PtG)m'ba"4id^Q
hCBv9"^8F%!(|w('OSK[pKTm=%Jbfnvi|<QkC,^)tRBAu(Xf7d[X)'U[Uq;0&N5k\JF=LmDt7grL/Fy?nusBh<cC:"K')a%|t)RqG|L)6`nD,!FZa[@5qrR9
)99`k,g}:brH]Wi6;*#H:qH71{A"0`xb'<)\u)J8Pi)`D@PFnfi`"Ju@waGpPhQu+;}G)2ujZpOdGL4BVA^E*7N!X${Ud|jU&,e7h$av%TqFG?<8)eXODBni
)H()*o'(MpeGuXz?b);=i!TGl`ex^d)e/o6E\aA~Z9<nb@)K4O}STxz,>((R/)4vFCMFV^%k\WD:^D)w:*i{YTy)$Fn|zEnFCnz@EL\ZInkqp:SR{P9|v:)]
%1.9Fro`E6&G8b9(dRc@UPE0I2.ODL7|).1*A^s`eZO|A<u)2#Jl\1y?1\q[E~2%CJlAhl|'qC+[>l.Qg)(z9"x`R?/Vdk>tFC`8zi4*xhU,y$vCdQ|S6rE`
&zs);VG1/K5yR8u;wM6>7mdUgsWH?V<Vk[Aq6Ku}|4*W/Cb)[=vLyt`N=R'PL^+Y#,wvO)IZ,{@W542C]*"&lldf/\c6h?O@k9mLoKd|J"wKfL"$eS+m;<wE
=n~pl2N&8pes*)O]y&\[<mb)t+2MRR)~kz4qXFMA".e)5lLnBBvDzK$^{E&BI3]g7)F`FQIX&P?p`U%3d"Qej5%)):dUjKIylbdp)i|8`FO%W@yh~sC`70i[
)VZ&RV[ONx"f9\T)IUSGTN*.=y+YBC!TnndT6<kM^8W;kNZ1v)ZI1Gb0;xzXnVL`bwS%PZ+3nNi7T}&xL7&Z:8`~{*VR(Whl%AR]L6iP}&yN!NxTtEnxNm44
5bPf@0t$O$/Rch4j?o[>sf?!q5b'[NkK]r2$d+da7d#$FgU'G?FB9PK=3XfX?|M<%J6%rWBa'5%:DC[|D$:!IK%vz.t[m]%~u$P26OXaq!0^pLXuB)@FzK:K
]$0Nt.eqU#$/2;)ER&''p2#pLz0`]x>|nH)bPGCzmga>+F}`d9j4~$KEfP;)Auee}Xzd$.pytlRoVD~<!e'0d.F(N4We6H]cj(IkyiBYzl=]U#fGo)"Xu4j8
xL3EqGR\8<s1Z9tdHjy70VII(Kw\@]&fE3cg=|x~m@"=E9S\X5y=2*bh6qf>{H!@Wd@S+O\<tRX%22%~wg3!d<97\5G*#4#%0]~ciFGF!<,e&)Fsa[*h]FOO
Y^:+)eLcuC?LyQ;fC{$Viw\ODEq(WrFJbsM1:l*o51r+`N*L11}5/U<zHaF{=kr(j8+LmR=vuy6];%O)i(kESzut5L0lI[g8`kfU<+ehvw0?5Cf<)JYrbr'h
/7%!YLIdg5,~uwGb'bVZ0ca0H0c{G,V'O>NTKtRj>Q(~jC{F7txLfT\iN.0d$~[D)(>GEoU~l"'BOl+~w("Y<CSYF^m4ZnfAb1MT.~>yEVp|({RDd9P16uVn
Y@X07qDk~&^Q(T+4n+)RL)myvf3',O7c1]?.I[[ak8`q~[UP>s2Q;q+!)6;my}$a0p{J.5bUf"l/f7]r4g"zEnV;N]YbHjx]}+yHG\)KFD|Ggx4h7QY[rl`m
pt.p\DG2#f](9]*3F{YP*4Kgq!2b7y=f)("7X>rjPaB&)/kHQjPAeFBg`u)M$x09~Ufw|Gte;e+akihQs#:`B+m@"mY.D!S/#nBV?}RRI3|"qF4VlnH}}32,
?mg~lJjj]6AE4;Vf8\<#}4XnuK+LdzI#`%3&KeTiV#:E4|Hb91.tCbO*vdXG)%USRj.Q(4Q#l]XlNGWv%ITq!H:4|C7l7)q(#Ep:Bi+&N4mRB?*DI*<z]X*%
Je)tDJ(@!)YwB5w|)wkSM+#y=BCLd)(*.c#*~CEtIt#7t.")~(:K3Pj){N6y~xXIOuD'\;DDYZ]S*Hq8=EknU)B$YF8"VQ+t&ALmM;Je+U{mPk~9w927yd~y
IpJ8@upUDQ\$O]=p!U2+*t6[Uq4kPzs+e>%^P^yc7!T%)zJrC`J~*p9)?{}8b?)@Zkg1Q)JtKX`.<"+K>#N.!5MmcW4PG2K>v{ZG1)?1m7Rc:*ZffM/Q\hDK
|)GNlQ$.W})\yAXRJfFNEPhFm#ob]1DCCX(0vdd}>,Y^p`zES5arur0,wN9M;rwico)c~KkF^747]YPQ"P2]X(1Ew>JE>w(Q!%qa.7]&!QvD:n]@k50jz!T0
2MQ3E~Q9'p.Ns:PAeITays^adTk9$R?ANn]\KD},S7RMYah)r{sR34Nyn'=?UaI7]?N5ESTbu*'hHx>J]F+42Ut"m!HG,CEL)xCY"{?xwH/YsVYIpJG=BONs
:HS.|+asMhNrh?ZA7[$hkymYzCbL`oLDL#2$c#|)w{WIjg~~seBt:|l.qJyCAiJ,&2N44LHm!&<5gE+|@l8i};1.sX"E|4s/=C$pgT4)W(XI#))h,:BF`/Ej
n:JqphbB())|@ye6i/gZLYO0X>4O}o)*C]?tF%unv&?$@xf<}h5@'#()w$ZfwMhS:E!Ts&gPtu<)\d%0ugVIzC:5e)Mv.:*eDwLVQuj}]U~F/?:Up#6Vw]r#
4(Y()p)#DFlt\&|8W9<{iT3:ZN)JGK+n8{e2oi~(~+7g$L+)2bQo))n.Zw/s)3@&Su{{v5?M0d:jg[=zxz^OBGi|lx~}'7/Ut7D4c|K^FlS;]|jSdT&zkUx^
&8`N(zM:p1$K~Gi+51"~$WS2sjpfQtx4!l^[W2g3Z6{1:CH>?u/1PZy(\1qU<rIxD>2U*^VN+J&drpj5LcOH8wY`7.Wu}nqXteP3)?WEG8|5Qj&z~)eguNBv
"/Lp{s"6BP3&:vKglNaowy|l++rZh]Z~NNtAM|vfX(5,iw#q3,r@z*kL't@t=U$X[{+Rk~5I|!5v,Kvi]da|T0j'laIw~h82590~Os@V+n]Y#'~)vsA3%ER%
$Bb*u}d{e)(P)#+VAW/)7<]vn9%n~@(HBdIv'wfJn]7U*nIoP8\\S,H]AtIQZAR;]b7b.C1%6j*c]hCxhy!lJ"Q}xUN9%sv]u?/*w;9{{,)ZQ5jHt)z?dTvE
a~[d:.V2b]XD@$)g5X/s|o:Q/:)+0)MoCGNRAe$+ZRt({[fffH{Qd,08iz<KyQgbc,QmBL4L"iKJ?YG2z2[Qw!LDpH%%O4&t^(l2+G\u~)"!Ai;CuFt3C|(:N=<[
g[kN!BW%D)dO^\p46cS$F&3gQPC>I`B9{@b)?fX1|\(rG/}{d[0'o0i+/3G%SgLY>px2mnI)W]0Rlb7l&6MG~iV!/2FRu<R[zOBV1vDT[GQm''sc"9J1aXt[68h3
5Jp,zejNp%73JCcE)XB{!HuE\G8$vif&'3:rE>X\L#\#uE;t4u:.RpJ?R;?;`&MPlW1%y)6XdKx7y|&U``lMQV=n;y"r!unr0mBG4^0)<~2,&"3VD:ra6a.ZOU]M
qfi/:3qFQ?>sHrChQ.yO+cBzuE3)`0NoNcnE1D#)hE'#(T{KDZpluwR7)"eHmZ?8<.w+uM%=@E&\L1kmJ]'CLI]6ww}\5$qjn*g)viaM@Xk)ot)nu:j`Ow8(*ZsG
Nim@W{Ue;g|,uq"yYt*].5MdWJ{wt$WMP/@J=1cc6^I[^[JM7\r=uMRa:Q#p86Iqcl:C;fvq04KiDnv.`7(aDQMb,wJ4)'u^?sU)Fye.))3|0\7pf)\6>]svyHz}
kOo)ctlO?!our[f/&};#RgqZ#G\ItAMZG[i]qmZe:HB$vR^d3k/S.hj"(aBMBsZ;pY~+W.N<a[yo>X\sZ]?d|6&D[H{AD`XzNj*)iku$.W)a&,9~FUdAr8g>)^+'
V<+i)X.wbNAyIeR\:58(7mueUg"LMjygrwjY/[OU5p|:1O+cc3e=gLd.#g]))D)>SySB|?"xI\<yh+Ib$Mm8i)1T"l8'`DLJ:~'?:?1]Zr.\:~<!JY4oFB@E>F#@
%lb=j:&)*lKq6W$UhOxzKtNfCH=#ew1^%ho;Fc'fuez>FX8e6IB%Wpsdh{vf;&NAUcAt/7,rsh,/6pA9&oqFeqZ=N/p`O.r+tc/2VVbhy)YoNCk$EdN&\O1Tj/[@
:c9ff95)PNfV#F9Y=E8ti9QkM!o)f~xg@.)g)65Jth*GRw]>t0lnw@D8XYlj{%gC6Z&o6QnM?Iy&r^P`fe/)dgW[$X}0RhE6{b2nU&0ypwo\Modx/0sQj/&N!nBM
/w,?H,vQ~sM&/myK]wT}(SFc!'y/N>o3M)U;%gxv\.f.K{Dp;Y*&'"zqC#o]$Vi<ly}q>8$*MRCTlLG]RI"{Zes`>^sV/?lL*aN(I{Z^%<cu*'=Z6PBL9?S(4]>)
67![Q#oOPNNgY5j6[ql)MB&)"k'{>~m87|by+0r*EJ/yZsP%Bm$;c|'s)*C&b*5IdwY3@p/ZJ'ut($\@=))mmK'+*^6b2N^1:+ZKY)YUdQqMD)wH?Gla^f9p4(Su
o`s+vl~M;y4e/#9Tz!bs/P)(saW+vd"k#(cm"X<c|Q?Hg)\#?tU9Xf1IAY;&+OA@|)w)+/n'\Qn.\Z}*>$=|:Sel$@?iP'm".~=64A(.k,Q@*x*syS>q}T*G0m.\
/&:M[^E;^J"Vf\E]VQzbr,oRYOucPea7<:mt?d\0#Rrp4B8ys$!'%2J5X(x|=cd`rrNlLJ.7"Dt#qr$QS)0fIX8iN\=Np;FR[)KE3qkgyCpO?`Z`[<E'8D&+@TTO
,NmAXS|aLF)S03PXHSQj,,I$;}fqC6BO/EyI9fHX6r=}1b5mB6Q)<beZ$}Y6`^~RnB6/ZBs'G+STw~RG5\{8.l&2ji*4dyhAFi!>yCJ*uu@uO8Kx4Blvk%w{pN"#
b|$RfX/N5``1+|.qxF>8ET2qYh41Q^{5jlUze(c!Uz]%>,o1/3XaI;3>bYv)U,L}#BMm`n^Zz!~ZR=Gj%7QwD)WI,;o]IFrW)OHmi(?3$q99;I\{uRf*8Q),k$Kq
]y7,2s3sK6m"&e3~{h#'jUk)fz62X(~FK{Uu6nS~E,b+y>oG:N.%&bEmOwS&w,F)ViX6wg"<*$nx:P0)})2&wbj;Jp4i~KLULoIE)q{WWaK)k#1WYaaNfGeHL|&@
IN\ut}Hv)hlN)3PIZ%VhBCyg;H,S'xr)H2Kk5MV'Zl%/6N9$vV\MO5>E0*l@'rAl@dqd3U{fH<)QDU)=2NR<xoyP\3f5!f3R8i[.x`vTo#J3Z*/{b8w@(wp+Y%{)
wZ'OX<'{K?Q?'aM\D^fqo/?Quysg94>.e~0g|W1:(lX7N{JHi+L*?rY\G^!bS*zLBM0ko2L#EHf/:Gh*b*P6ekg2aQys42Y=nLEp$Ity/V,||M,"9CmMx)o4Uf[7
h~k)HTYPdezzjW.}FQmU9n(P]39L.):DPrB*)}R)SR*yq'Q\oXN14s=bAG<Ah[O/WW%4gZN)8{g;ZX@><+zj:S2Ph`Xg2PI::5t?z44idgPP&C(nzJDbAG\!i3+e
ybRz;)N=h|D=h41!}A%LS2p7#r[DXG5.%dY>9l~,8Z9^)Es|k,yJ/"5clh)drJFur!,43JYk`6HNU^bO?TyqY3|p`S^a"N9j6s,~:@jc;3}@RxXNp:U`f1~(Q0C=
0h!]7v1L/gd:c1N$L*\YC\L$&53zZAKybAYO|'>$tIf:1a"5V9j"B'HxSoVKh"pZ)TKM>y>cW/hhV/'.Xe^d`.ig%q1/Oh!]LU{p=4*RstG/0DlePd/NAjKs^"3L
x[>0;tvm>#b$#Bdj%9D/h]k'FijfAhE1q]u`K`klcz*h\GrJTrggz8c^;^nSI4oADlgb^5/j"U>{A|1?Vf$a2vELe.]^wqOUx5cI;&rI1P\efHJ)<$W@}@0]]k&o
A+.XN9A$QRCGY'Xi/2F!]*j%P4/DVs)dBW{)fc3.e=p9t+uGlO%"{7@'Sv4~1e3Vxuk.V&Hd;gU@Q0Y?.@s#c!8(]V&cm+&iC'7E#OPEry,&rIXM{!={'Yr0T7Mz
2/)pT5U@EQ5&&~nb!Upeg&?n;ZE~HNw%{?d)3C@J)vM|[+zwWZ(V/*7q$[J)m??TtF1Eb~qcjIDI2rUO/il>'ITJQ<([y(}I,s~4QQ7vT<t~p%'Z]4"=k0$Ym./Z
gx+vk5B~lP,X+\rmlGsRPI8b.NFeBQ1klB^@Y0t@8nLtn\}LTV7&!&P)2:9y4~Wfon[kA/}MI<^T9=g!rm02y)xjR{z,+~VnAt##A\DuOYtS0^.tx/NhBI|*.MAq
l=&Z=)8t!#t6H$MJ2Qd5.c3QZoGv7V,/L/^EciOP0jE|T4f!l]:b=:q7)OVw9;1s{pp89({M)&@s9>dJyG^7GJ"!1]qpj,BcQ)+!])<\#jv`9#@=Ki6)VdX?I6Cw
"M^0%u#I9jb5bfJp1.nN;bLf[uI\Kf)ND]%AsV't;:A@sbN(;[Ae12X/r\Jkn)B?V?cSzX*8cK0yTixwV|x"]F%f<NYvFrFTFCg<keD}<)+=>kzYU\JRwLSY)rJ(
E%I"wH^<{KC"sH?JDCPkMW/d)OYwL%HaZTO2(%')~1eX9XUgprt{,)l`9g[)<0\D]oO&~tw2)lq$|3j^;$th&Ay5JUoyaq4?$O;dL)+&HrLyJ{<RV?4emFGa>e";
7:*F{/GjeR)0'Vg2ba/Y9oS1jv;H!615OvD%e8jF*'ne!{<g/T,'UFKorF<>+6T[r3mu)C[!4~`R7Qq%FF\9Ze)1)*'q>/n)G{{17eZKKp.&QQIzzlqszn&Kb{R,
Rt"4"eZo@,YM"pX2*xV/+<6EPD\Hr5vfG1"DhJBa`p:IQ)lAs\%hV`5VkT#QkVo{2L(,d#$|EEORk.dFGcPC?Y|bLz1w5!z%6#P6HxUI9)=BQVUXU9<DwO{IVI3$
(a)t&~l:Ro+g:*lSd0&=vSW;!qMdLlQ)G,eZMRP/}mywwWHMwTM~1S{vcwz8og7c9bV4Wt"7+]5uh:qTOCeQQOjv9Bwba2oDqDNs5m9!9}p:ZQBZM)KEZ%6/5^fM
L727Rez:Qiw'v7}fA0|.r=FENOAxG"a!:17)Y&5azP&o)y(qdQH5GHrAlZ)]%){nM^vl;>%K;d[embdJ(TF[WGFqR!`Cf7Z#!(Ps$4L]@Jg?~]K$^6oGf%6:zPzO
64L/o?EG[CLXE<Mm@gKO8S[MJejk0B*^)7fPo4H=#@)#+Db<qzh&{(5^g<)p:|t+z0j;aIj^b`mLu#D;pheg{9r+3v<`|V>]K(Wxde|E')b9Zz!H>(N'#/XdAK,o
*G\+|uQ0,D8k^T!olQ,G9"3Zt2Q*V&QJFO#*6TR)E,>')#G{51A)[=CPFjlzc9i&dcL;)#sQBhtIt*61?~n'?,U\XI>6T7E5rM;fUYIdFKW{@4vITRQdMrKT7a%h
?>3{y7;U)}v)\G/nuB3H7e01M#'wd/'4>rA'p}$fb."56]lx!|t}/13;blKRo:^CT'QIlw6v1)I`IhuFI?/#^Y}=@D}a6|\1;@}J8q)Y?Qa6#/;,M%MO})O2^[D>
W;P"w64We#I`]O|j;{i?Bkw'L~qLp^dGri7?!w>H/8)ID;Mz]c<|`j.dGyS$%v*mA\"S.48GXRRpX,o0v^z)9i;6?%)u~1T#H!Oj"ja6<PmK3t`qDz%ms(~Cv)@P
;J+owGdA{g))MUQ$3Rr%};Txx1q':PczXP*y|t)^*d>9~4PFR;fTm4rT6~,)ItA:*GAiZaUnfG~..gRbx:6b;+DNJtXudQ`^E.jIdE+1j^T0n!,=EuGoj7wTN|*p
>)8K:E`gi|grp@"e$wRZM}[7oWCP~TIf]}Cia,a)[bSVB=Z&D5bocp(q''$gz=MP6UK{wH,F[ox<iL'S+v"8N}fzG<qx=].#pPLW>,<KQ>2ckQ\26CcfnnErAy~"
\Qgj"LC@OrB@Ml|3rL1&;m/6=~h8')UJpu{Q?EFLa\{%y;7i;c7;*UacJ1/493PFUZa8%L!'o09\%^8ATv`gQUPP?n(kj*I*}j@3Kud$}:`GJrnw<DCy~p52;Z;a
Qn|F$EQ(;wUtSC=f\2YR"):C!<x@cXV,,07>B]IHZ3E?1D=LTMNtt7)N?&Bf]<nXn`IJ1SOdGdxbyv9+U^8czcS9@)u)v|GOtV+MW.Tk)49lzgU,7Per;)WI2pDl
RogS57`v4ajFk]79Qzl&"S.(WY:>LG9c4K/q<*BrO)tD/4}Nc5?7^W~FvdTqZY9=*C5BjL&S3)lXmP4L50R\"DarV~n:MmB/2Mb0/#[9DC(yR)1*6ly&N0HxPD9[
N>>lq+T&@%?qv6}%^A{:85)30+G=a5(`4bh@.dhAh~4,*qK/h`p{u{NiZrE44uVfm3Gj7}kKW:XF3m+puO@S3{jW%8$ZRMfa<NK+}W$33=TG!FVU)]aK11PV`lTe
^MF%D!os6x|%n`nGtXcm%5P8N`PloCs>Vl`"<O}>3O,/=w]!$@y~tv|isO~'d(p):%`)S5uc2)s5e`7kT49]2WZ)DG.w$D[I0eK.">G%\I!2[cFi|^|JkpuMCzIN
|dgMZgWR06o&6/6!)XLf8f`E1:pv=#&bKi[Q$@](\)vCN/MZu3?}:SA9>dgiUa^7MR)ZpD\Yae>l2\!Y,)<qmznaEC"]%phZbWXH/t|R&)z<;L9i[KUk8;X6]y,[
)LJ^R5B[5svih$aZf;$5$/R`tweVsfd&EkJf!A6*9}KJXv~TWO1;jcfy&]{'kbtR)m|uKpQRGB:I~?Ui6IRh)+SIA)r7EUE%X>YI=fE*P7q.`*`k5YZr\u$d.RCj
*ZWG$}f!~%iL6:IA9\3Xh%I(:;:D19jFt)voOD0?^F*W1>0yQSWPD?@z@:)jb)a2MI$,$2fDf)rqZ()lk)lQ)=dLhfH3davbo=yOaZXNahxf%8pn8>xNQmjvWZim
F5d$qQNyuVW3"E|wC}"Q(O&9SY1TycdRv[)>B=jbpyQ*7bVBz8k$(7])Z)UM!XkL([&~LA}[:%'C4[zxKc5):lNncNef&3X8pb4={c]mNB\u:k/]UBj@VNgP\[Sg
mM7/9Kl&n.9NM}$HI6W}u/K.Sz[Q&kB7TnF1oO+)W@xp{/7kWoNg#>]]r]Hb9*+B0Q,gU*.@Z4GXQmQgg$Y$r=FZ!@Q1wDj4<fz9;2>6]\*b$){>VA*Eu0Xd^aAB
o;zw>sL>)If00oI07LR7;)K?LsVl&Og=$PlwxaJ&iul/rHZ'uau@6kc&lrqX9e5+Vqcz{m/nJx{')&)MaNabi@Q1?%8A2%?wcCya.sZ3JDY)]dm5bJK$rG5w.lK&
d=zoPxc.Pw<ns#*T=s~@yFlP5wLt%),|3Hifu.qsvcf#v9h{:1N3icH{whlYj}r~Y@ZqT0on0Fq(poLY>v+zB}#kFw:+%L#NrJh7&iT]BS<(Izt$Vb"=Ny#/F8/6
WRoq&VcV$=.x.od!$=y<f/@I7ld<ZJp~5vt6)8l;f7nwINU+TU#0h$W#knd,\?Yx/Ij=Kt=4R8mCl)Slyp2Pm)kpxf95lw!pq@;o~|~)R[`*"#;];(xB3H+GjuAG
4sh3fBT:kXuU:&2~N)BWv(J>{W/%?%S9A|M2)'lahf6+e+uH,T&NW6C>dv`[B<N\Dxl;&fv?gA>1o=ok&/r\5ZEP*t$904V.72VyWL=)B*tefpARaDu`2kDu'Uy5
qyN/JF.&;#awr4)~|o'&Gsb(vbn)Pb$%8ofKL#xZv\0{"jGB""f[<zDuy/d#s':EbVAvGlJEp*8P(D"}:I;uRz3o~d]y+Ez(bz(oK>B8j6k[}oZH/A];k>7\&4Zi
L^EC6!'b:[nwspQZ4bgmpqcrdIT7)j&`1JO7CQVD\5zllz90f{~1~SEa1+jO>Q?K^aBvVTh:?o#uA.0)+Mmw:As,bx;4aJ@%[%J'y[lh+BY<&$oBPoK#OU2=YV4O
Xu)9+#!44fENXjg#dh/k5CaI]I`K?}qs9'W5<VX!W:|n,Ml8GQ6C%@a?n/x)gbK7t0p`t43)\86m2`EcG(.5l\Zj%dl8}7b5830C,)PfL{"Ea[oK/"?b)>w|eQ%E
lyK)G\*h,(pWD8nLx&lVJ$p$N'!&)p=f{=;?*?zaAY>3%]Avmjw|U7*KhkSZBdnE;dZu:p>M*)>luj&`[#p[%,q'/$g$#wXcAQn}t14(]yIegfh,)MLN)b$ez)/X
L|PtG)m'ba"4id^QhCBv9"^8F%!(|w('OSK[pKTm=%Jbfnvi|<QkC,^)tRBAu(Xf7d[X)'U[Uq;0&N5k\JF=LmDt7grL/Fy?nusBh<cC:"K')a%|t)RqG|L)6`nD
,!FZa[@5qrR9)99`k,g}:brH]Wi6;*#H:qH71{A"0`xb'<)\u)J8Pi)`D@PFnfi`"Ju@waGpPhQu+;}G)2ujZpOdGL4BVA^E*7N!X${Ud|jU&,e7h$av%TqFG?<8
)eXODBni)H()*o'(MpeGuXz?b);=i!TGl`ex^d)e/o6E\aA~Z9<nb@)K4O}STxz,>((R/)4vFCMFV^%k\WD:^D)w:*i{YTy)$Fn|zEnFCnz@EL\ZInkqp:SR{P9|
v:)]%1.9Fro`E6&G8b9(dRc@UPE0I2.ODL7|).1*A^s`eZO|A<u)2#Jl\1y?1\q[E~2%CJlAhl|'qC+[>l.Qg)(z9"x`R?/Vdk>tFC`8zi4*xhU,y$vCdQ|S6rE`
&zs);VG1/K5yR8u;wM6>7mdUgsWH?V<Vk[Aq6Ku}|4*W/Cb)[=vLyt`N=R'PL^+Y#,wvO)IZ,{@W542C]*"&lldf/\c6h?O@k9mLoKd|J"wKfL"$eS+m;<wE=n~p
l2N&8pes*)O]y&\[<mb)t+2MRR)~kz4qXFMA".e)5lLnBBvDzK$^{E&BI3]g7)F`FQIX&P?p`U%3d"Qej5%)):dUjKIylbdp)i|8`FO%W@yh~sC`70i[)VZ&RV[O
Nx"f9\T)IUSGTN*.=y+YBC!TnndT6<kM^8W;kNZ1v)ZI1Gb0;xzXnVL`bwS%PZ+3nNi7T}&xL7&Z:8`~{*VR(Whl%AR]L6iP}&yN!NxTtEnxNm445bPf@0t$O$/R
ch4j?o[>sf?!q5b'[NkK]r2$d+da7d#$FgU'G?FB9PK=3XfX?|M<%J6%rWBa'5%:DC[|D$:!IK%vz.t[m]%~u$P26OXaq!0^pLXuB)@FzK:K]$0Nt.eqU#$/2;)E
R&''p2#pLz0`]x>|nH)bPGCzmga>+F}`d9j4~$KEfP;)Auee}Xzd$.pytlRoVD~<!e'0d.F(N4We6H]cj(IkyiBYzl=]U#fGo)"Xu4j8xL3EqGR\8<s1Z9tdHjy7
0VII(Kw\@]&fE3cg=|x~m@"=E9S\X5y=2*bh6qf>{H!@Wd@S+O\<tRX%22%~wg3!d<97\5G*#4#%0]~ciFGF!<,e&)Fsa[*h]FOOY^:+)eLcuC?LyQ;fC{$Viw\O
DEq(WrFJbsM1:l*o51r+`N*L11}5/U<zHaF{=kr(j8+LmR=vuy6];%O)i(kESzut5L0lI[g8`kfU<+ehvw0?5Cf<)JYrbr'h/7%!YLIdg5,~uwGb'bVZ0ca0H0c{
G,V'O>NTKtRj>Q(~jC{F7txLfT\iN.0d$~[D)(>GEoU~l"'BOl+~w("Y<CSYF^m4ZnfAb1MT.~>yEVp|({RDd9P16uVnY@X07qDk~&^Q(T+4n+)RL)myvf3',O7c
1]?.I[[ak8`q~[UP>s2Q;q+!)6;my}$a0p{J.5bUf"l/f7]r4g"zEnV;N]YbHjx]}+yHG\)KFD|Ggx4h7QY[rl`mpt.p\DG2#f](9]*3F{YP*4Kgq!2b7y=f)("7
X>rjPaB&)/kHQjPAeFBg`u)M$x09~Ufw|Gte;e+akihQs#:`B+m@"mY.D!S/#nBV?}RRI3|"qF4VlnH}}32,?mg~lJjj]6AE4;Vf8\<#}4XnuK+LdzI#`%3&KeTi
V#:E4|Hb91.tCbO*vdXG)%USRj.Q(4Q#l]XlNGWv%ITq!H:4|C7l7)q(#Ep:Bi+&N4mRB?*DI*<z]X*%Je)tDJ(@!)YwB5w|)wkSM+#y=BCLd)(*.c#*~CEtIt#7
t.")~(:K3Pj){N6y~xXIOuD'\;DDYZ]S*Hq8=EknU)B$YF8"VQ+t&ALmM;Je+U{mPk~9w927yd~yIpJ8@upUDQ\$O]=p!U2+*t6[Uq4kPzs+e>%^P^yc7!T%)zJr
C`J~*p9)?{}8b?)@Zkg1Q)JtKX`.<"+K>#N.!5MmcW4PG2K>v{ZG1)?1m7Rc:*ZffM/Q\hDK|)GNlQ$.W})\yAXRJfFNEPhFm#ob]1DCCX(0vdd}>,Y^p`zES5ar
ur0,wN9M;rwico)c~KkF^747]YPQ"P2]X(1Ew>JE>w(Q!%qa.7]&!QvD:n]@k50jz!T02MQ3E~Q9'p.Ns:PAeITays^adTk9$R?ANn]\KD},S7RMYah)r{sR34Ny
n'=?UaI7]?N5ESTbu*'hHx>J]F+42Ut"m!HG,CEL)xCY"{?xwH/YsVYIpJG=BONs:HS.|+asMhNrh?ZA7[$hkymYzCbL`oLDL#2$c#|)w{WIjg~~seBt:|l.qJyC
AiJ,&2N44LHm!&<5gE+|@l8i};1.sX"E|4s/=C$pgT4)W(XI#))h,:BF`/Ejn:JqphbB())|@ye6i/gZLYO0X>4O}o)*C]?tF%unv&?$@xf<}h5@'#()w$ZfwMhS
:E!Ts&gPtu<)\d%0ugVIzC:5e)Mv.:*eDwLVQuj}]U~F/?:Up#6Vw]r#4(Y()p)#DFlt\&|8W9<{iT3:ZN)JGK+n8{e2oi~(~+7g$L+)2bQo))n.Zw/s)3@&Su{{
v5?M0d:jg[=zxz^OBGi|lx~}'7/Ut7D4c|K^FlS;]|jSdT&zkUx^&8`N(zM:p1$K~Gi+51"~$WS2sjpfQtx4!l^[W2g3Z6{1:CH>?u/1PZy(\1qU<rIxD>2U*^VN
+J&drpj5LcOH8wY`7.Wu}nqXteP3)?WEG8|5Qj&z~)eguNBv"/Lp{s"6BP3&:vKglNaowy|l++rZh]Z~NNtAM|vfX(5,iw#q3,r@z*kL't@t=U$X[{+Rk~5I|!5v
,Kvi]da|T0j'laIw~h82590~Os@V+n]Y#'~)vsA3%ER%$Bb*u}d{e)(P)#+VAW/)7<]vn9%n~@(HBdIv'wfJn]7U*nIoP8\\S,H]AtIQZAR;]b7b.C1%6j*c]hCx
hy!lJ"Q}xUN9%sv]u?/*w;9{{,)ZQ5jHt)z?dTvE(6bs5oI)4);Vl%HfaM%<?;w)){vA'9Vf;AsK/ai)
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
bGXj8QeM5DLBjBIMSC1YjsCr7jeIV/ng7MRSh3fUcQedGpa0QR9fhIsN+Zrv6hIyGlUpId3tJ97Mf/uEMg71eYP2U7Nrsar8DSVAuvUKqODNvkCG5/esgsAK9kgj
NwfsiSp9t20uuf/K5fyVS2pAhqJ07Mxp/9u9XnUUq/aCFZvaykq4C2XFzSl5b1pF340i2x7XgpvEtoNVOp5QLMX3WVOCTCcJkZuiKK/wcvxlN2WFbs19Xf5Hq3yc
U+FS7e/77X9SwlYe91W1X5fxi2CBtRI/Tb/LphnKFa8BbO6S6garzBKzeW8viyQxmC5PZsx1Is6X0ZHqKJAb/73GnhEaP9atRNFqDsVP6VMi0C2G15mmDtjKXJiN
AnfnBCYIw4MB1gqedTIcyhkEGzT6ZFBjNcW6B5ywGDlOV6nqCG6s3Rc5rqF35PXctURLqRkf6Ywtfs74Q1pRJNjiU/ADDVJP9bkCZZBOUeO8fgudwqTecwrka+Q7
ZNy/ozsm0YZSaPUM363yQYtES49S6I7BIicRLm79aWjx0roGXnVKwT+khjxIaAtoO2t9k8092hNe3HbhWQzHaShb0LUWwKHiVMtnSg4afkXd60G1HYK1rZoNshRX
cBvS8GhNul8QBWx1AA2cj8Pl9moyndpWVIMqnmAGTZZiKVXANqI1J4SqiNuID1VtE4vIe/TfwVTNZf+DGLHTi1G8ZXRmGFcJzR6iL2JlH5kw6V84T0KHbJKotGVl
lIhhstgcHp3SrTvaEbZw9yCBVW+Jaw49zrrgJ6TMXkZhSveNMnQ+WjGarc1SRdML99ErRzyJEtC0KyFEr4ITho2Yf4TKz1k4vY+1UCSq4Ld2SmmsJDzABGIehA/Q
SB+BoDnwlsyo60zji+3gux7hDpxfhgcsQgpgJwf1B0lq74pqMN7w
ICAvLyBYUHViIHRvIFB1YmxpYyBQYXJ0cwogIHdhbGxldC5hZGRyRnJvbVhQdWJLZXkgPSBhc3luYyBm
dW5jdGlvbiAoeHB1YktleSwgaW5kZXgpIHsKICAgIGxldCBkZXJpdmVkUm9vdCA9IEhkS2V5LmZyb21F
eHRlbmRlZEtleSh4cHViS2V5KTsKICAgIHJldHVybiBhd2FpdCB3YWxsZXQuYWRkckZyb21YUHViUm9v
dChkZXJpdmVkUm9vdCwgaW5kZXgpOwogIH07CiAgd2FsbGV0LmFkZHJGcm9tWFB1YlJvb3QgPSBhc3lu
YyBmdW5jdGlvbiAoZGVyaXZlZFJvb3QsIGluZGV4KSB7CiAgICBsZXQgZGVyaXZlZENoaWxkID0gZGVy
aXZlZFJvb3QuZGVyaXZlQ2hpbGQoaW5kZXgpOwogICAgbGV0IGFkZHJGcm9tWFB1YktleSA9IGF3YWl0
IGI1OGMuZW5jb2RlKHsKICAgICAgdmVyc2lvbjogbXlDb2luLnB1YktleUhhc2hWZXJzaW9uLAogICAg
ICBwdWJLZXlIYXNoOiBkZXJpdmVkQ2hpbGQucHViS2V5SGFzaC50b1N0cmluZygiaGV4IiksCiAgICB9
KTsKCiAgICByZXR1cm4gYWRkckZyb21YUHViS2V5OwogIH07CgogIC8vIFFSCiAgd2FsbGV0LnFyRnJv
bVhQdWJLZXkgPSBhc3luYyBmdW5jdGlvbiAoeHB1YktleSwgaW5kZXgsIGFtb3VudCwgb3B0cykgewog
ICAgbGV0IGFkZHIgPSBhd2FpdCB3YWxsZXQuYWRkckZyb21YUHViS2V5KHhwdWJLZXksIGluZGV4KTsK
ICAgIHJldHVybiB3YWxsZXQucXJGcm9tQWRkcihhZGRyLCBhbW91bnQsIG9wdHMpOwogIH07CiAgd2Fs
bGV0LnFyRnJvbUFkZHIgPSBmdW5jdGlvbiAoYWRkciwgYW1vdW50LCBvcHRzKSB7CiAgICBsZXQgY29u
dGVudCA9IGFkZHI7CiAgICBpZiAoImRhc2giID09PSBteUNvaW4ubmFtZSAmJiBhZGRyLmxlbmd0aCA8
PSAzNikgewogICAgICBsZXQgc2VhcmNoID0gIiI7CiAgICAgIGlmIChhbW91bnQpIHsKICAgICAgICBz
ZWFyY2ggPSBgYW1vdW50PSR7YW1vdW50fWA7CiAgICAgIH0KICAgICAgY29udGVudCA9IGBkYXNoOi8v
JHthZGRyfT8ke3NlYXJjaH1gOwogICAgfQoKICAgIGlmICgiYXNjaWkiID09PSBvcHRzPy5mb3JtYXQp
IHsKICAgICAgcmV0dXJuIFFyLmFzY2lpKGNvbnRlbnQsIHsgaW5kZW50OiBvcHRzLmluZGVudCA/PyA0
IH0pOwogICAgfQogICAgcmV0dXJuIFFyLnN2Zyhjb250ZW50KTsKICB9Ow==
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment