From 00e73daabd14629ad7f3a5fe18a68c51dfa4709a Mon Sep 17 00:00:00 2001 From: Surma Date: Wed, 13 Jun 2018 23:40:24 +0100 Subject: [PATCH] Decoder for webp --- codecs/example.webp | Bin 0 -> 75398 bytes codecs/webp_dec/.gitignore | 2 + codecs/webp_dec/README.md | 38 + codecs/webp_dec/example.html | 44 ++ codecs/webp_dec/package-lock.json | 1147 +++++++++++++++++++++++++++++ codecs/webp_dec/package.json | 13 + codecs/webp_dec/webp_dec.c | 51 ++ codecs/webp_enc/example.html | 2 +- codecs/webp_enc/package-lock.json | 358 ++++----- 9 files changed, 1475 insertions(+), 180 deletions(-) create mode 100644 codecs/example.webp create mode 100644 codecs/webp_dec/.gitignore create mode 100644 codecs/webp_dec/README.md create mode 100644 codecs/webp_dec/example.html create mode 100644 codecs/webp_dec/package-lock.json create mode 100644 codecs/webp_dec/package.json create mode 100644 codecs/webp_dec/webp_dec.c diff --git a/codecs/example.webp b/codecs/example.webp new file mode 100644 index 0000000000000000000000000000000000000000..3bf97b794b7f8760865a939b39515f95fef61a43 GIT binary patch literal 75398 zcmV)iK%&1=Nk&F~CIJ9fMM6+kP&goRCIJBOOADO=D*g#X1wN%xqDrGHKf59o3JdlW ziRo_Ka^rr-X8v7nuC5xl3vIPp%Z4*NAO92hzPot+{~w5dZvUgu3#xye@E7~v9xqz| zQ|uYxx8mcwUctZR{QW=2=YK$7{vMlOp#R?LOaFJH@8^9le~16mrt7M2XTMQV`-b>1 z;lGDIALNhkA2m9b^FDd~OZo@dC;ngjf8Bqie3JbG`tAMSa>8UJ3g{qgp0{nz1u=xhJW($HLXBwcW@&qWY9;U@0`p^Lj-->5_< zD94fm2O1Z!0UUwI5N(jFMG>~r`r}ur~q?2sVoHY!Bp)yWdqoa8J zQa+wGhJ!U{N(+)ZJRTQO|5MSK6MU%jO#(!2P0%YK34QM z1K~{l;ysm!sNZ#wz`Th^zDvki08tQ-R2lG}k{JTmb}YO<^^R)>(xpg6QR`Q5*+eec zTng?a`>_qu#1n|M&6ODU$VE?Cv1=D>T;=VR_n5}Xg}G7seFNj^0IgqHL5Gs&4A8cx zoj6c@BRgNw^zTL$9ID~(VKhB&%k@XNtA@l>pmD(i6mtUwHN0CLL$N^WZ%!|-UE(bF zOJRftG(zkX16Lm#dZhjnNdP;|EwaKdQ_l7}0h?4S=Wz%NqaqX@zlQE`*j<%KP_Dti zm0cmb(flLMrZg`a=@;hp^BFpxv!ih!y(cfeR~wb88pE-8pA1JkUSf-q zqF9)AD3sBWnF0k%6LQMi9JxZxa|&c^dLm3C!KO?lM%lVgH+ye-xYtDrxzTxz+7x$1 zdhXdI{E-*rmGO7VzirTX$QfvhWSrNjoVU!)jGcX6Y4ou%Bv-Rpq!aI;ALN@hn2bFa z$Up^ShqYLbPTM7^BvEEcA zJ)Bv9lw^s_HE%%EKu)7R{M zeXc-Tpji$TL)_(l8JdA`gy+pUqfUO@=3gXxLDb+77`K{U#UJK$n*o>q)5;)1xE!7 z)#&plS&eQg(p>?>W8Hl)4u+dgKFLkuxnpf!M3avY_J|KTl3`SO(IxI9^>Ab$f-^JM z-Lu8e*jlCOC9w3C~{LP~nz@=J7b@^vUnSY4#KO>sjgU$~|Jpp%Q)a1v(Jc2n>AI zvjore2EijSsE#)b*TbAvKoW=l|A51B4CqtN_EsAj(i*qxep=1(8Zpo=Go1{3C#zyP zg!!MyLUDW;q?msgNj1GM!D8BlWY`LfK-^M zIhTQ7-3Y263U?@d^i6=W2L}woKG;Tjq53_HkCXzhX|M=hfYq%IX|P?r zQt|GrP+Ibvlg9{B`o)-0v3~Zt`LzpGOrF``y#116f#h3(7;H#^GAw*E1}%g zI`f|s#}zh}HZz|@w~QGH^BsxjgsO)(j*I|H`RY&pzmajEO`0%;C@!iY{<*lv%@v^n z`?)6h_Z)2h?2Js;$&yQ(o}FjJ$+~rz<_>&(Qan|H{}8W?M78w?4lJqvy-?(+Ocs~) z_8)w+-(p0&EHMJ%BqN#8RV)TNAONaO58M!2*t3bJx#$z^nz>mRL!kOk?8vSRga@pY z5S+tSMQ~xgG==v3h;laoI!I`n-W46Fe;%Pfwe)?YCh8(*$VZ}!ae1?06+B{3pzwE( zN_bNSCgU9(^1?myfU_k#&Kd3l$?uPZL5uma;I`u}SKlOMyf+nCi7CW?pHNC;xYN>- z>gnR)N^(O!W@K5cRJG132_1UBAGBeW!s{{>q2H1`iUQ;kn0PeFdE%5tNg{Lj&{i?w zKVME26T12UBqd;kh=|Uz^gZeF%9EHbCk|5bg$sahKg7`WYRG_~r+62vsaI59AvPcD6`-jLYaNf;lP@ zzqFVWeP-=5qB_VOkz`tZ&|ZB&M%zrElK~K`dN+vAIuV%of5{Yf6$9jR?)cQb6v{1K z#VgTyP!d@+U0A*NXDGKPsboyGjsY8G)3hfuxf&CSJfM&2c*v%_Bdwj-xSXDEET_CL zkohK|tf(IdrQk9(YRL7(eU{r@OO%*G@j2m?(pF=TQBY7W*~%OzCYggbl&%-jbbKgD zZRDf$J!)Q3X|bvguvy3*6he6Nr3LtX+j+bVpEj`Yrvbq!+Oi&(i6_I zSi#$?xux`B_}D-^)t9VGExins+*flfvWaJC#ucMI%DIQe;&|e5E5y@St?Tz7q}{5b zqh$5*YU7ZYpqfymIIrcawiDAv5ypa__NzNU`V?|^j2Q=}k2ELNNNAYnMnz_3m))6a z+wVWDckw(2LnI5HSuyn?4!Y>JS#mF+{0ZaoJ5>P|+;^^S`-b-Cn;Fmbr>R_jBCn>2 z@2psy!&XJ2LPJ%>#8yEC)p$k-rt!)vzyvxy3fZpxV&*eVTS0eP<1MQub_Z5HEH2hw zpZMwks?HV-7RJf}Ets{UK=?_`0~L1SA~IEJI85#3&R#9#St}0{#0Y_Kd&DH}3i2u- z%cnRh?&FgtX}k`yhCIJva$CKCI`z?_Iv!uNdxfpZ%9-Ake1B|C4BPYGeIVL_e`5BX z%7M#y}3J*4L36ce9j+_VNRav`FNI7*H3pw~JR{HN5VAzZP@w($CRAhw{YvxcwSKX2|Ff{%W%C_!~9%bImjM(GyFhH54Ys8H!Pf zps(>7BXAF|-V(Jb2yALsX?)eJm~u!pR?@Ez;MHitIaCJ{w@SI!2g`q14Eeq^{-)`d zA)dy(K2=;}@P`?1p(r1S$G|DbwJk7S-u)knBI`O+X6npy#F^ABXfr-oIqg`vVQsYP z_tcZ}7b=sTe54VamUL~kk)29`17{c#&9tTpvjaHB&`(Rw!7V825hI0wiUV zHKUome_pF)mh&4)MyU+7pRo@#b#;6>7Td?dT>+Pkt`?L9 z9$MDQFXPM`MQ-v1r~8p&%Cr#z;R+CN+&Sq${P>O_+0jS>Jq2f)oJ`cqrP+wSKNd0C z+q_dd3p6X{TvAd08wb~ff?9ELI0#G8w{47829aw90%(jYf6JgK`5EA4p2E=Y$q~eM z`Pxy$Ystx(6*^PQlzC~B+Z0#kTUtbY38`c`0aVRc{Dru3)I}dMb=E#^7uY?rlZGm8 zOeIiLK2KY+`gq*Ed%ZAyltV~NpVxu9-NmcjM1igKgpyBb75 zh!+4*6*RH>puHh&U>a0!fICHL`YjpDy-ebJPFK{UDD~@-KSr5z+{`!W8 z>^+bO*9I4Z8RIx#^e5`O7d3}k^}pV!eGZkfs$14O3qXv-9(*@ATdASidYwjNrT8Fz7q{YU5(|xmXsW z*m5{=&1F=OqsZ_v?MRFCk7kfdJ-XyQ!4QRb|Bw$`oy&`l$Kx)0o{R`trJfNrV}epdPH=}f7Hxg9HJMRSD!7i^d`$k%V(sTEc~9(ieKq)3~ZSviWyx*g^cS?)cw*_S~Anv zH#n1_Dx!om^(AVF(vNZ%=Olu}ml!RSOhtvacU_>CT8a0)x(~x1lm~xA1~;e8=k+(&4@mhH<+wc;qrzp*A+#ya;&> zf-@WMzJF~RPJ;PR9j;3waL__?4OqGB*6f#bH9yRJ32TU8(d7=^83OSk@>m0hBJBV} zu#!b)o6ube7pgL8Z_8O&pEXtr@#~hm?;}M2EV}uI^+i@*3(|Q(^_$a1-wr*8_6l1P zo7Qey=1*gv%t$ekAS~_mEJrL>qbD0rZs{FOHv|wc}Oe~A@DW?iyBO+;xTB)0`z*><`oi#<-*v`V18`Fw50uOoB=edDv z)JEOHde#oY-3CWsLmxiu+{lV8hqS5mk>(-URpm^W!D_j|7o|a6m>;nPe%yG>H<2njiD0TJ(dA+A)@xYgWDlDKDoJ1J;=}}~ zEQYpUu0HV(G%bT)G$)7e6J9Whs|{-X@_H+!z_SyuV-;XTL2h|H1_rQQ56B?com-F< zuM%i3bGpSgj|pg>nsV;-pS_PV?H2|XPK`XIjAxlI@!|CDgXgF_I%pO>5fjs?>tDoK z=3V#3?Mm)pp=l?Cf6Eu0BTbLwdHjkY!Y*)|lbjuKE;lEOydNm4ph3)VikumWL+UoJ zHCORc-$RUO#6!5nk2nbf0f_{TPXHn>&>)UQgeqLPvwX4U(4!Or1TK$I){NzukyK`C zv#V3yknS`Wg9rs9t*a*3(VWhxQ-X={A)iGwU)J{CQqK`!ql7J|VQ#h--)gsCO<7i3 zPia+#%&EKweCZTcZdMSO+90$ZhpXBcnOc9?eVQiyK?rWX&e+Gjoqr89)~(|%gS?bh z=HnWQ-M*_v)x=s+BWUAomBv4pnEeBI;`wF+)>IM(EO4jrO+WEMKC%6FK^{JAAK!n2 z`LObbnD;o-|dP_q_PH1*)iJZoDhBBkuYji2wSX;E|0dQ{P7D zt44j0b1@5|=RfKbO5;2rG_*|_lwU!qfuJgE(F*X4s@@XTOYuC}LlELm0o;e18rrXC zCA9Pg0t|%+dgRv^ok>a22vah`G3Q}B*#%hFvwDxqYSOs@I?kAuMIu?`^##T^HPj1a zuOzhqAV826{3hO^1V|ZwSO`|9HQ0Hm@$aK-v$jO9_m6SV>;!W6`d6ub`rt?BzXivd zRvMd;q-^dsQt?p+CrsR4ZD+Up8R0pOlDi3^V~ zGaZ-zr0I+$c|Co|TANx^WX~c}zIwGyLS2~t0VJquz`;EPv~a9gX!z{?izB#F{O~K0 zBlDgj=IY|_BDgYzmrW+-Ra(q*H~cM}NUD_024Mq*lWsJiYWnz372>Mhf94w@EC0m7 z0>h(Yl&CR#@Yj!NTWa4j1}WaSn1nv&e`6~Q>voYt(ESYKmecYuE*StYJQ1Js|ABa;3fY-(ik ze!1Z6CNsIKhCDcN&DYCo}cZ=+k#CNH~p&6mm z;rK#sU;P2R`dx_iMWbsr*RAvBfIt=oforY080#d`SgIUoiSg9pDk4n!N%-y|`7_Yh6k( zkyjG`s=nAXpNz7ZJ?43nxK&%IAHM|LCTF0Ecw_1Q!m>?rBE%#}>>&~9>E%W|if4v~|CyUT&1hVTg}OlALR zRWEa`o!xN(kgsr_&2&8nE$eDob@TDCmFmm`En)u?C?g}2*WKo>S7OpU;}lAI0a!M= zgI?bKz1sx`fA8FeV|x@~P_sd@lNXT5Nv^x0KjNDamTnIv-TNXOUSk`N2&JSgx0PrR zHLO8y4dA^|AV5@$L=yrJ&`wZ2_B!*- z+^+L?(<9?r7^o?`YaxJ=JKvI`4s{5r+QIS+DghxpwX4*MB;5Z1VTRXN&jx>D`KG5X zmHSua49(A8>=WNR0cL8~fFZ?;R)ouD`c*Kk`mDrRcaX!8b*BBD=Sp*nT=TqR-bL%5 z3LBGP?iE+BQkyBiDd&l{M|=OR6HO@iJCq5knyAxX%!8)~i9eCM){@}WLc(GQ6gats zbSGLFVtqah!=uVBAD3RDlj~)2-{+o?V&bBo=r96~cLJywH=`gUL0I-+NkhCXB=>g- z2iWMMY5FBB?V>sLVP~z0j>kq)(MQI?l4Es!za`hI#dLd?EoZ}mqYps`8sEJa+8l|3 zCJ~3b_K#e=`e)eKL+S-9d-pjGV*eYT!Uj==d2i$PtRFr&Apgv0sWs~~@-boM=xsu# zu!o#`o3s%Kn+uDSER~A2%RitQ@EWmccag2ig>Ylf2s3JgxoS5acpw!b_YfRfF?j*C2|#{Q5T)BY5D6T;1wgj3_Jn1_L4dO!b| zBYIAIvixOX)ae9*&}MD(o1e;d`+DyG_euv}wHDQeB@{&O>T zt}He-EAMGG_i~eN%rE3Nc-t;j^+h(XwLAZL3xNsDHDp&3^E39YH`m^;p!;%*xZ_B! zFzy>MR2KcSsVn31D>c$3EP~mUnSx3|bS(wJd&=_u_9N<<^e}PRNS!JoJ)u zmOTp=4}na#qQeqc5CyYT?~l@Orw>#Gg7Gm0!*Kar?-k_bvYZGNs><~P5#8L*E%exK zYd1!&e@d09CyeEHHS)sD6LCv$LURoOtqYY&37Q_dALMcrSq0>sSv$ehs0l6x75-=K zb{5yjA$tsLA*r19r4#!#I5s66P)I4$FXf|`9`5;eVkIQkz);5P6Xc8v2=@5cddzNU z=qGF^#bNVN;}KB_;7LGjIvrx=-T$0dSCn>kr=fi8ZxrcK=pwY0iG_Q$+%-Njm_~-m z4HT4j!b?|_=9g(I(39@*`+D1G(=>&Gq2UG+Cr{Q#$A)GSlgQl0Tb5eiIcB;tFNEva5$~ZEwpQ)3@|SPFuZ5AnqMKUFot9QEJhgq0zUya3eImWpqv)?1RQD`)@;{>OElK%ny%M z>QqC@e=E7qf)CVK4zp?eK7nuy5RVz&IYLL6QC3fx^lX|F-$D*jQvrbfC`W7%q?7E5 zG=!|v^laPekh&9kuLx47rHRZI0v`ix;dx)uw)DpSQI$;1hfrBx8Qe1lmyt5`_A^2L zcZpJlkb;4OjppqiRWR%~c^99O3lNR(PS~N6Xx^KGs&)eV4EsZZ4Iz`iz?=ti4Z9N+ zCl;1}eiS2&CpsK=H6`BeUKiJ3(|WlN_E#^vdWbcH9xUe#PD7UhoA20ntx-Pu^S=h* z-HQx}qlMX8D_k;HEoGHGZ-`B99tr8Kx-TPYRb@)?(VzjXiZj!j<<+r=&Xdl(u#rj| z#`5=x(ECP+oVkq|S&FpV1#P(fF4|GSoI^EHo;gcah)b6BhLU7i1WwZoU8K#R8PepY z+aRRwAuO+0*+@A5B2`ANBVbrf41z2-Afm?HNn)zyFHN^elgTk)P!vD#CBFgVzYXAYJG)_g^&KlUw+@Iwz1{b0;K5jW zyV9;q3Sf|Nsn_pGpuum{4ES(I775biP|FDQBhu;H@xPxsw;;byXyIG@K}~!G%*MWp zmpq0q7`#?ed3H{xIz9Yo#;R2~Pj*SO<3C!kyG^90qzv1t=!gJ&d~Zuz`@3Ffa%+$L ziNFCQc|8Ub>KaB+gx4OHCot8E>^RIm*M<#4G@X>XiK0lj+G*(3h_Rgh<69dv!p3)M zfqTdCOh`*CdhHGY{VYJF_W%Kala3Jw)kEH7l-RzK>Xs;h+TYV&85(e3mY}M9W%=%a z=#V6Ao6Ye)5M_gm#p$O5mI}j)>t@cEb=uOI;>g!D5Xxss_K4c}mqCuLkQ=qlpex~- z+HUv}(W(bz9ggRq2K*>dd0BfD#ZkJ?ZyE?@GTVe88TcRW^&L&q{elo590?{tPB`zL zjXoxG+htJ9+u=O=^WJg&bf$`n_zNLmwi_{l(LDLUQ#}HLnvg3z)N%4`I#LW;5pZ;h zR~4-X`N8?fr&)&&3T7CO41?Ka-Vy1*gbKO5Kwu>fyYYrE^W;y1*Y7nCX5 zZ2Uwx5P+p>6me0L)+dl^%qN7ch~hsa!6&%Is(O}v#%L&0c#@0xh09KpC}{&w48+5? zTJYZ(obm~hU+5?ur!PO6cN{eEwN0%*S5Ywd0vu1PDiFG8fG~BC6b!EJnD|*;l>{c` zl^%gjhdH5L-IWe@hknEx23tg>qC7fi~qa3}KleiZo4WxUyh0(oNccXVT4n zi{RjVGpg=!M^Dl{*Gy5Z{adxu@0=jXt(uj9E*cIX8SWw*M;JF%Ns~Q@q z=de@;_P@M%5w9Ly+8%4ncdMuBvbALNF~sbEx%cK_#}Ydpc{dzv+{FIgdvSWaS}tJe zSr2bof&|^okmy)ARbl=0QSj8}d4~SFxpf-F!Ve^I(B9XQ{`}tM3J&~#rpA$;BhRSd z8xE>MwJEQ}@F0{Cw>;-%D^RjZ`Tl&Gi2qJ`cRDgGQ=90?cOt4yMFo4P;ohQFWK54G zR_-<=p&6C*)4({Q-)|-^eTbY8x97t8+o!R&b~c)q>!@ta=2!1Wfu*T)!I!>&h%G9n z=YY8!LQ!H3&j$VLU54OY=!s)tgvw*ZTYP3{9hSq#MP8H6ZX#YNC$x>!mcy86WW29@#DxG1gdUW2ZBmX}I zqgppoyAVuoPROCL?dAZR0lqI3cG``b@Ihz9B{jR-1>E)`rx4)f-rp44>?olf6N296 zlW;s>0tX^6mGTGZV))yEc|YTT%obsx-V{iJI^Kv1<#ekgkXOE6sFVn$!eFBYtuCU^ zSyiH>RbB?tPjDlWAbh9G<FpS=Y^dIiE0m}bI)JnZSAT1|^q?gjhJIQ5ZGM;_}b zkD!winL|WLX8I9l4pzHbP7S-PbOqd$3ya=#NzBFXCz&!MbtpW#?;dlj6AbDu-f>_R z8!H#PQ)-uEITSpU#iR7{q%+@~hPhn%VvlFC1p`#bzl{|D@S8jvl&x2YK}Y_@u2kiJ zIzkf79nL&$TY_`+yUWC#H$i` zvfOxKMvZR)f&>vGLyWRh)S`}-TXjm&jfA;7cQ8WeUX4c!n+qp1b)RKGVqpHnL9vE@ zieM_^f-&^ZoYeHM7)w(vw}DfxuX;;>bE$0-p+sK9yrh!^S!WU&?+tF$MvAW_1%Vf*^L{)D#Wl@pZub1D zA(=wNsVRL^eBEr~k@!M0iB;7qr7>2PK08PP874~cT7;>CzSC)NAoNE9uCqrHF)>4{ zkjlVB;6~Jq&Ws!6GWem)lF`;wJX}b7i{tOgp_hIsZlj+?C#+bt5w+a@BJ(B^SLQc@ zOo}rbMDFDxlgo1@>o04QYN8^$>lpFGGx_pxVEmk_hi^zi`M1fWxO8KiWIX+%m%m-M zAW%c!MD^%3Czhsrf24#6Pe?+AqjL5+mKdtKk){*?I4D9#na-gW? zkctjuSpJarl0He#le?c}Be;+-(C8_$YlU!RAY36ihJnY;c^YU3glk&`j_8JC3Lu@k z_mU|Pm}`8*M$}^rexI$y`n7U5S19DM0?ZJ3Vg3W%8~PUp!oiI~?_&S^EI)n6#l;Hr zyTPZQ?(yF45FQA5tNKGpY4lY-SjfMPpGjWAxA0<6)1kCwGzacu%&N(nDBV-tN(cD3J- z8b%D!valqMb=hB0VFiP$i25u_ZvR%`9LK0DL)up7jOWqjZMc-p7#x)Y7ZBgi5;M*l zH@%@$?TOz6&WKdMpL2AzI$8n#inkRkMC}a&iBx#+@=yCOrHRZnWLE}41;y!+59Wvz zNgOI~fKC+s5|5JBr%5cT>CqSVe6@`4osNcyMPHma@_eFA7cW2CM2|KYZ}J zCc=Y0mIrGpVT?wfCIID(+k_|6kTM&jPwv1u;7hWl2#RCjLX0x4up?UAu$A%+y3_&k zSwogeF&X)*q^PUlV5Pxq^8 z!pffwWCZl%Pgj()ZWt+x&Zqr1jw~`x8p2Hcls{|-Npg>RFmZ2hCw`2io}c`9Awfu&Kk>MM@=#gG1m^$ev}mpS%{{>m zMifQl_o8ZYFhj49Pzi+Lg-jh70z{4o$jwo#UfTi98uDWuCJbga)Rws4O3%4=hQ`aV zk8&W8r9EunwkrYM*T2Zp1S+_Ul1bPdM60#5F?frYj77s$uI3~CsdlFgTVX0VjXvk! zI^2k=(i6G}s?&3{qQGq81c1bGYJ*_O>FC~?^x=qvUb@@`d8;8LcNIZTgzoU3`i20w z@#|~);=uL-KL9%{--AE!&8Nw?pe2d33bq>&C2z<;x@k|IV8PdvC3h9!5pW*zC$7`a zva&YfpfRF%0=wR_yvNX$hX7I`kbTwoEqU!6!L{h+rY#mJ@eQ(Dp8GNAb0_`Svl1-Q#CbRLa8q+)u z+uVY>mA0o8ua*jqQZ<>=ZK6^HdS>5nOn2e39&6$koE-{||! z3-j(MpmA%>M5BN5cjWD&$uNLMtNCWG69x zUt=%FrDlMPR}Vu@S^FW7oA~gNwp8H}oYMe@iU#+!5Zpc~B zBa_Jykh}GtAALsUboW3?Km#OQ6k$pZuti0Gds1&u@_bJgVtR(?D80nvNwO1gB7hQC{yvi z8t6d;*qAU)bMwwXyeER0g4Q_YZLR>DcTegJ`&RweRjsjm!}`OKAsIAZ5(fyvKp_I* z3Cm0LCot7GSucN?6~T~z^(WrB9|B$c`J zvA!|&V$r7+8?7q8x9I)L-!ny;>#?V2@ula3t=^}wORiFMRuk2A!zH;_K1ik7vqu-O zYWLKhs6`1y+s;W;(oeeU`I|{Ou?Fmte(8ZI1cFSfKRqkf0_^>$R&=5NH{us%vQX^8 zG19P9-?m`mX8r%Hn&#;ihJyke1NPrJK5WHXm2yRBlz1T- z2pNESY8dBJB75M%9-eC}`d+)HpiXF6nH7(QDzGZ*2y{tOXB42in)#rIiIVza9bTtV zeQxR zo4Y?JxNEE}I-u0Ibht^&+iOukN~<~_dQAGD-BOhdCsi=YKj_c25nobL2o2?X{2Imu zL~VfZ+|^|MTCh198yhQ_Y|5Xren6j?xIM1oYa!4|HqTO%9xGL{tedULO&@pJ%$qm? z*zC&?n@rpomp@px$t+z?W#^Mfo0e6Vlp=q5Vz~(?BvpL~o{x|YEk(SM$c zRKrihEi*1~Xn1O~!aBL&Q_+T2H<+jd`^a$I4p{xlib4DC`(_1y^?o61XDbgCM=L_3 zUo6t^3FNdP1S7-b=iAkmfi33zC%Fm2%B~#pm~SP_Th8Qkc#s1J0}WPtyYO4}k5E@I zu2`z0g1}uDLdAov@D(*Wte2J9n?`3k_Egk+$7bDP+fw|9=J7~59 zqW&thu{`&LJ#wl)+zw--?aB)|8?lbvT`5d0flwY?#0XD7xz=n5@^fS}M<7MKwBfvx zQX`E_LxIj44E0gzhE4fOodmVZE0#NGQ3P!_owG^Sn}^IramN%W9l+&mBOdy<$O}!B z1POqYH~2U8ivKAI!3C9`dRUypRUhDlcbiKFKqn#QKZXm7$zzah$vDI9UQ<*Ry? z*pyF_Th>0f?pWXSmXyfkkni-HFs3=uq>KR=A)3E~s598`uujdo@&uYbC;(N-06BfpputE6ap;rHdLdlB7EROTKzhNrE4PtPJ;to*`38 zk3q;IM^a?%9@}xBHIIlYY z$MW)(mtyL`CJRzo`&0+fSr5!`N>3+#+5NHILwb%C!H{|jfmWQS+6Jvywe@PqYz&&& zN6*Ed;F*7Zeb-%*R)}3Rc6qEofV8>faEFE^BTTK!MDQwhZm7{L&g@WRb0G`}BSh8` zB{kyKf&N^w81`5_K$(X)M(VjA)cB@0+!ZpZX8(T@oGJY1A)-}@zBUAXPB}gvyb@6G zsF#asgN@3szM#%#m$u*BQT@ytMu5_*g;0QFmxX^dnO(J15qn>whoGg{@YWM@Go3&8 z)wwl6FbXk%0(8*33GktO6?qU=II@w-9~uA9+A!mn&2C1Iu}UmyPr^3sk02oDJPKcE zLOPBEBF`XYW*67Xa{3nc_e&Bmp-y20stu{w&*wX1^|~l!fq^!h%1)QRHc8V2`Vx_| zR}E0K^1fK;Y1%=!2=%KyW;tA0M)puVsg825ff+V zgIU0ngBD|UfW~&nHh?y}lsg<%@#P&e<2qEjo8=Md`&vIDdCLeK6rLR$e)v%c;A*pl z>xr;T6I=Z!{4|s-Hd?Oo8w8FLSo{b<^f!Ipa?NX+0Uhdaq9qR|g!paYm2uyP5m!QQ z)MC-b5H-hNg?xkwD<6GAemG>Ogp(FK4bc87fesz*WS_TQh8^JnHMJQja5XFA&Vo3V zmWinSm1fPf42?dXuC@XbDp`cmCMSf7Vx=I8`;ubP=rjEA$`m_C25)f7r%NLvvUF9{ zy>BXSHO$fcmb}^toW{I(DYc8_Wf&@%D0hsa3Zp|yG$CT<*PMbem5taoVJ&=tYDI}c zmpp!>&go}?0UDg_gbI~T0UAQ&EO2dc|-E5%9NW z>@mppuOz9k7p|Brk79L2BLVB7;wF=8jN?1re}XUK95dDJi^7eCu7Bs6Hh>t~1;V~I z%HiIpt69s4F6DLLp-JMSg2zoRy7w1P4K`iYWjREzV=8uftz0vB0$@mLUiWnc10=8q zRMsyxK&4Y@V40CS#pSs?cMz5n;A?rbmUP*6IP}aR0&sD)Lo{OrSOavlfb|Xm&d`)CD7w{7WBg^8(0`0` zU9A#phT7f`>CoE4*~UUP43W+#bWi|=gtskT%u0_ky!RgySDY}q#)$|d)r+1i2X!Wf zhmRf*Lg$!0H%-_DXc1KlE)sWkHkGlN5?@mzhfuhIY0Am!aihIu!V{RCd`Aq^la|E$~>v z4_ud*hhSbFw76E}W@-UH&v(E2%Uqj?RMH$gm(>6`0@la!bcVx~sWCAH@GragImp3f zD0}itgkP+Oxpa~cMFnN=R*GfoO>84szI?Z->)o1sg0^h zhB40`#v4x(cq8^Z;Ev3`bU0h!Z~v(WlS{eAnZ$f9Fkl`neScWDy$GgDKIixHsKv1P zp(Mqi)`#&igGgLa4+xBm`=aZ>Hcm50kmD_=r*}T%F*x7+w=92hE2IIvVYWkJh|F5Y-JgVoo2h@EObUsGW>(4&6HwOIb3ibp){RmKSi* zJzO7Ph^sH1X<&iZP6+=eAh$Yq*vBZI#Qour749UHz88ZLsYO~c&Dl6~B>eur?U+d9 zIyrPU-Ut7)H#?oUO2*u|;+7AJB$&dV&A*DO_zhaJD}y1^4}Nj+wncDb^UvP_c?3w7 zRkRodGMS$c0WID;wTw{wfYj-_J@VRkf2!)mq2G7O$w% z{~R7F%eA>Unk85as*+JvlRS~JrXfWgr|_OjZb9w*(tw{Z*Key7Ki|f3^Fc02Hq1lsOkg84P8lMI#HXNazXD-l_{ zMROh>xvA#l)+vCO(EFB64bv zC%&p2QuPE>Kn|lHCw^aNq!#}WL*1Q2h=(Fg1R=LcJ$})3?7*sQa^vAN;HSfMNXV7H z)KRAy6i=*m=w_?>c2RG?uP=wL{cA`>Og9M*3Ya4&aFg$Zo-#t!|%ogAk`BV#q z|DJcXMG)<2!3_$`xRtGE_@%<)-u|rm2>ck14I~7W=yLILwLlz0F(vdGdkp2Xk2jMw z9GvVtETiM3PTHngd^Thd8CkC_lZPDmHR`^|-Vp27+y()2XvOLOP;KEAc)F7@p5#v$ZA zRN$xKF+`giT)HQKD)90gg+i0Pd2kY!D7kXbimmB> zjh~0Ue4wMKB!f`YZE+X0KNC#=_JZxsH#s9S%qR_eab4u)K97VbT2EgxAW60Z>8g)@ zTGk~;)-%s40C-3a>A;3~I z5EsaJ2iKpmE{iBk$o)E^rmqGus+%?XL&Zj-+DYu<@Hm)rPCrPh;?U^_Lz?lD%FJ~t zZ??d*_qb7CW<$Y#mDP`3{23=XlMuK10Y*!KbF=pnfRYEUpaaHT(FLw;Q%jHbH6%MU zOC1!;s%5;}<^i6wd1KUn7nEIyo`xBoz28D&%PukGayMw~%#ctj(W#@iv@R#dv(EUu zWp3IvTE&>(%Dzael!7(LV&TaW3QKrAe))OwHS|@~-7~n_aB+eEeYEZtZRsZGDj0OY zCK)M&yn4Ggl=8f>kHkUYL}cE?;XD7Khe95zqsGDmtZc#u9Kh6L=X@2`YDFRH zP=QbdGmQ++NKymu<+r?>T_n4IF&X{aFNpc75&B&wc9IcA~vzgG1cfz{^yGr zZ+94~Dy9NU_}|A8`n{F-%%9t)TFvh|yx+_IWklac+`ZAsT27s6y-*Arj?xR67KREo zLj2tFz>p2obR@FkbCiCU(E7XV_lH3|GBD(BC>oRo43DAb>fXyF92bwX6(~TvX#|?> zy-hjG?p*wOV%SCV?E`r-5r|21GF8#M3R^t-!oJ#Xqe4c#j)thn-0x)ZykZNO98Bm) zJ-JA`>-Khrb198ty{%+9_EBL))b|7ipcv?O>jw^MuJ*wSyn&U{X}xyiIpEKHiSpWu z<7Y}8aJcJPvybqS+kzQ?`2>cj^cL|i4k7hsRRH@1UUpDYyD1H9EoAlF{1OZUV0&jc zD%TR+P;L4n+pCqQ!n=fzXt_IJtGDhT5f0v+Fd}r$Icfk~Lj*G?`i5)>HiQC=qbrrq ziv!CzKK*PTxQU8MZfXq&gaL@EPm{@9Pg-%XMZiJ4t$1vUdeGb)=Qe%NELVU_SQcwi zk=`G*V&&C(IplAhftZ$s2C*{`9x8UDeSy_n?x?YOWSu8UzdfViXjDAb~XsP&U10t-=p7c#M5~xyh8JZP(Hn4xd8+{U4#96w9{cDesgv+Eu zU&Vg?E@qN}?=Oumh~!lyWTa=7CO92Mt3~ZYm41QW996$Qqdn^5T!b6v0y936#kh zCyr()!)oU_RDe9c{xNA;8Y^e8Cl%;BXPR6Kxg3CZ1Zv&mHYM8vzPpatg^KyjT9x{O zQnVf2wkfa^zNj>^jp_L*TRzA*U6NdTs^^rUUD=_ZHn`95P@_Yl2lm3yYmcYfV$zud zwJxUoR65((k08vE7gR14R-PMR8WHi7wM$nOe)1GooA8&x{1v}iI3e;K7hDxdaf6|$ zICrVA1M<7RJ5}2;1CP7+Q(&%(3GF$&U>D^c4Xdk+o2HS40a?6X>=$(xN7zuN;>l@R z=_L09+)mEzH<>q%dcUM}IDVQG3k_9-IRfzUY60d56-IpyI>JdJO?kdIvL!5$>7U}p znu%%iraRbHq{1?vDQivZ;W(5$Ei$yl*4}w^s)|s?pSyP&@*T-}4*be`hmU zazHr#;KY({>l>JuvJ~bFlxE4ciwKJ=ZMK{dvD3hX0ZolQFKg{fj{NnJ_w4t`AD2N9 zcDR%?{4e2)NdHr8pfa-~@dk+jDW6|sJcYe6|6fS}luNAiaaEbK&bmS3+?YVykAG1U zZNSb+bWhJ-Kk`5c{OJ3D1{3;J1HAAd6G7=r$(_sDs&Te9u{zNa6*9Qu zXP)qLwV&|s&)ry7>;C_T|9A7BRs|E{|DfE@T=0L?Q0PCE-D)g>r!~plQB`@M*2XtL z$Juh6JZ+xkbITm@*Ov_^HKeGprrd%##-PFXj#>FPfT_S%r}iUUxCis?H&Eq&*ZiM2 zS@mD_Q4r6p^#8RS_ygHPi>c^{dj-MpXCsj8hy3sSe{0jz6JGjx9)yxvh<@UUgje%C zzOxWMjl?rn+N|9Q5wo^8KT)S?9bNQM7f=TE%^ zOb`Xtq0Cs{WS0+o|Nmeu@J|r8R;lHIf@3-BV;S){N?(MZ6ArgaTYem`C=uQ}oG?YP z9BGw?IO4x~jU-vdva0vDRx)mU9AtwH+8AutPSDrPVbea!9e?%@#6t$NmJnFS&>Jt< z|C2kPdl(Q$tewMEads1luY|^bqRu(hf@F|=Dnxi2APOOLl}u@5&LgN0JSoiQuTyv; zjyJ{ID};F;0*OKLXPGkm!`6N0?0@hZoBN^}bNO`Y&uZ2Stc*BlIrtD}bJycP5o543 zzYsO(V```@1s~lTxHC0ZF0kku6ZDAy90hRE(}a*>NtLX?I-2sZI_9Y5*r#Sh60WwR zk|3qB@87y#k@EcV#tFmAiRN{<&0w$f5$%Au_bZ+5XiPU0b0ZyzU(EBwx`(={^;DVL zh`5~ERD274Vf0sCX)t%52>yaMEib1C110-7E6=N$p7p>7|8A!qzB{XjXEu*e|K0Rv zuy`cxsNnmB?=-jEPs95E`@8XD3;3rV>1cd zFw{`8EL8?Fj}QQYzM}ar-iSD0@o!>T6;cUPir5-pE321Cw(XJSfHTe{FpF`e7EDSL z9e1f4pUw-C=kjC4UN4Z(HWpLl5!U(5pJ%)%wn0@DSDYHsScW?UYWhGTidBz=F~8KX z+OE(pikJi>M;3D5VUpY$e+;|swGAa&f#Y35JZcEVz z-LB96*b@769{Uf`v;F|`oBxU*=W(3;vW1RJ=x*CbPz5qtQbTI|z3k^1x%+&7oo+fk z+J8+URs}7n-JM8lh^JiFtF*4LpU?0z7ClP3e$d(k8;4VHNu-|$nG8SfFUas$tC^l} zo*q<@^0D;+M5xklO@);=9RJDA3WqjMg=h+djAjjuz9#vMzhcWBp@x!ia>ge!XLMlS zA673D%H#`-rykc3R0{L=88wu|Z?{q$iImEl6y8beU&~e&r(T|Z5(nl&C|Xn{XLE&- z0OWm1c*3PaN<&k5p0hYNj)#kWKRG9aI+2Za+oK{&BI!jEe%XiZk_&}2f;^xYEZE66 z5!1(F?={=(MncSPQOjMzhuxkB2U)FitPUW~P8zZ?-`&7^5Y3idTp8%44Z})flzc1y zX#1I`*eC`_@tbU;ARs;$l;tOM^!+ZTXf44GvmlgqV0blZDDa|v;JUzqR}_ypiR&Sp zCK7+S+CoImqq03z6(rf^B_J~rc^zEJF03N)i$2Ss%Nws36q1)4i7Su`IxMsPpaoRl z#G^*YZ*!wMolZKPCk2e%t@kZ)w@T~Nh+5e{WZ+55i7 z($prq`Ot$y_At00=-tq4451`5;oTboLbvv;Wo8?Koxol#qZ3>Nv4E$bUkY05@*=lLm3^#IJ^^#WmV#u?8Vi_RN_?62gf!5v_f=Y0)-W~ z-6q)lfu5u6Ie7fW$FtB-zmu;KoUM*I1QA+Gc-Bo#pWLhphQ@$rMkS2l+$Sph-ydVN zyZ0yw3-9YokS}v7_GIb=JJ;tPd*W51Q;qt(i$BniKbFDp{=fpMTnfI#=#ETGsR6=c z%ZM$zA{r&?W`mM}1FMBrt81igXYQ=yuwR){iojkH#?9?eCV^Dc2`|Ivrz%@a zGwMY$;jP6qhbaZd;2x>biZ^gVuv3rhgH?kPhI!^};?+({dhcv_&MyQ_Tyc6xGf_U- zhF>qzwU8Lzr?49h@8}X>m2dh-^}xvh0PSZBdAU+7h*c+6 zjJ%X7GSMIkD*x6@L~@_mv!QN9q$>1R+uhY7*Pek5A!On7pIp>4_PrEa2ZEkX76(cA zYiWJ^w#b#@_x}eb@QXgvm4E)e;;c-=X(gH13?F*xIviaewv_#_eC=WN^%~_jzJnNA zX?r)n(m^*Kdf%hu<}>6*5vE3~FTDnAn3+u2lmtm#ePzm!@OCTxnvh^IdH3pUK}vA) z4kOeU37-KG(_Za=?v^rHNqt)9}Ok=SY7=lb0sjyhn#V0m2)_EvTO*Y$z8)RXf z5N~*tA3p54O=y)PnXu)#b8QB~gGcvWx>LG8#>o3R>LHWgD2^4g3I}AUswykL#Ge+| zHW7AogVPcWg1{4`DmcGq5SGcQXew06GCD3y7K;kDy=h~w)I-z;U*cAqDa#t0k7K&T zYU@(s9BW2S4bbweP%yk_D<)K%wi6LlA%v%QwE@znurUPCyS!8c^+V2YkXVq>&fEiN z0eDh?NR^ZqSHIq(%%rZxJGe$=UvZ=+hneXGEf^~50&>?Br!kob0Uj%lc^RCq46R0* zDNYiHG?+k)6pWYK`?O@2?(>Dvq_OhiJW&p%W}Jddb^_|R>Khn)Pq-i;x0HR&`WEp$99v8v&3KRzDweK4ar7pJ~gXoqeK~*hh2(0X0M$L7Q5y5quTK` zooc+7ze8{68+D^oRb7x#{SGh^^_;iLGrSdTKbYO_|+$(30%WPO+w^EhnCHI2~*8|-;d3qCAdzxV%WHp_i1USt1T8lD|5_&E?A4&SOhStyzmW18qE7D z3DHS=n5QhIGLk9M@n8{{O*V|o6ql-vgv8oip`P*3^`D_f%RZY8B8tcRu~O9#zvB)FO-O1|s1_t5t-jKUu12A~sx^1YEB&yT>dZbP;RIgd&Q z0n_&-OFpMcqZj4o+OamJ2Qy$SCxL`9f?e&uq*v26`bNYVsv&^B?`vm{9$Xt&PmaGs zjeIBLm-^3CuEkzBg;sLNWm-N#I{mNEs8|FaH(=sZx{tF%(g`_F;eHRjZWVbf+e@lu z@X}G>nI@tpx*qz!D!3o4&d&Q8fBzqGx;!FTO!MXrBs^!|_7pR*V-)!rz5H;KAF{*s z3zUNCC(20tpGWq;7S$huL-hN93`#;yU_Z@qVdw-ev*Zb)L~dg~uDQMvE~Oi;QmLS; z9uqw`C_#)9i{fmv4Cf28dec5q)F-q9c@u$|*mi$J)^2)Uk2%ssv`fEd!ccq+^bqbp zMa>zGtDZCP6E%JL?WY@wpc-7S@VBczdu*MmLK{~-V=q@>@RI>0hkM*Mkr`?H$~h+W zh%E>ws*WErO#-xNDgr|zt#T2X#bKQ;^L+iMLJr;NVz?9|j7!V!7A$Rqy10dCq~@gF z8r^+$Ez?$6->r;DQ%6ButxM5x+7;6l3C13aeXe^+nk36rsC*p13%BIBzmU5kr$CT? z5L9*{^6QmE?+^o&87&gNEcfLE3CIx}o5Tot|M^GD|77F?SG=Q=v~m{;b=azrK?G&K zeIa5O(_R{jx~Jp5{2KrdlwzH4H?XizrZP<*u8bDAxb%$y^)y*hjwNxdcwG&`p;0Uv zFCJPS`i&np`6~&?h6dJkr~=33a>HJdpA&N7Q%c*y*fSjSWxvM=C>sHsi$QiY=7O=M ze-6!Vn#?qMjWBk*%qdqOZ(j34W3#XcZq0=A48`MhUy+N_^dzr~6GV;6^DhweS89vT z@zoz7{A^PtzW+&Xq-j}~2Wskb1>*w~%|A>_2xK7^Lnzo^Xdh}iWm4;Y4wJ;vH!abD zwoUg;wXNLRL~yv#eq^OE=%0?hy5cYveNAD6yFYYP96sV0&F&+il{`jmL28&e{GvOSh2gC66?*gk&#g*cn#&Pqdwj>P zx|#Lmy)=a?UZAuxn*;o!78TEn+7o;|db!iQj^!y&Rf$Q}$yX{2>aoj zCmSeA?kZV8D&ze4FHoVV$#A8TtBzhP_I0$S3oEI-5i_D=*vv;)w}%P17qsS`nX&#} zeRme>tatZ^?8D+|tW3L$?hzgsMWyF5OQ8(2dI`V&mPVavHY5GNalzhug#4I_l3V(@ z(N8B(=uZLeXX!y26j8Ef3XJr`0ngevES{#ls#e66%GWWYegs~7o;GfLuCkd?!r$5WNi&9! z|IGs=bl={1Qj~ZsMAz<;Ae-~|0N>3hb>b30y&`rQHI2Y`g6!%2H;uk?b6uiGGsODl zcGA{aOMNH+FBY*t;iMhZ6=dh*e%EPO8E?LF(!c zZ&i^Ryoza9Hc6L1ainN!3C@oP6SRB{bIXUdxyH1sonqx9HgMhlzHoKI4F4fK*rrBi zPzYt-%?-?}9F;1(MnieVi%756`z%{ZDIWEyp7XV_9#y5*#pX}EXH5f#7w6@Z-M!a# zW)Cd+BanaEf0-qalkm5GA~&hH;C3~NY0KO=-HWmf2T3WAxCbp`Pcr+1Rf6xP^73d* z^lq_2;(Ah8vc_W~)+_zbV?meRnkLiTwgjm>kB3<>T;1I@_Ghc!t9dBwfdaUcj7ARzAr$a4F5@d+z z-k&N&+TJgJ7e#S+{V9rwPV^II+4~3ycKv|Q_VDhka*ki)#&N=LPWN@0!}`&`1ntB| z&xHzf`?oUE%iZZ-&nig1`B)`ip@<#Re&1|X^G*7|bR(e2D3+y^*Z+!X^cXw#_oi3Ua{nNdy)>SLXl6uJQWQA`dxLssr zYRW+~>yN2*=My<^r4-1o|63v0F;;cV9#%&xW%r@})d`URfM&AK`m4$Z^y;hr6y@=D zkYQp)%**y;W`S&Gqq#nn)`70LbkO!>?ZLI*40*Y@ndDPJaL`g}aU5hHB>2r`oF$B- z{z#@9N9-5??QdqekwsZ^xo$T0H&t091c4XL6u?5BR)kCcj5m;=l`@#7bne5W?Rz)$ ze$09*w0ZVj)}8vbYRyCY*rz@$%Yw0tn%`pze<3tb9x1v*rWN5eJob*$Zwdbn8STs9 zQ$P1~B+H_?h{2!e#r9k}Po$Mw0futM03lx6?(H4 zlC?$(dmg8GBlkt>%Yo&>&)i(`MSN-&2gRz~I->z^mwU-EH@#+sF0p7Pl7?_((qFJ~ zf)(OWV;*n|i+*f5N1t^S;CJ0j=~_mV9(&bY%T8W&8w5yqk#Dk8m=b)THs8oTNCyAt>H8urCp%T4TZ(dzaKK&sD%2 zfheUH6!(B6^4$?I{e}M)X%ERhkC51++LpL;K7#)PBY11AUHt|qA8X!CtU|$%txcYR zyVL!?c9$NzU+N9Wm{)u|Ym)}JXtfM+FP+NOQweh*JQr5IHvrKe)pD!(sO@M)o!?jw z5Y>!5cfaALtOw}$_X@*ybGtI>b#`86F3z06~kl&pR zT^Y`e>*pykcZI(?wi)2CH6jP*3Z0Q&suz&HL#e7Cbt|cCvzxKLa}Q)@EZlUN?yw#!pLDP zt3fn(GhrmfO&k)Cr~BJBiNSq)E$!}zH=Vn;M?JXT={hoUZ>aE@Nn5$E8kGTl0dxsYgHGyaY9JM}HwpD*vM(#GNM zaHN-sdK_1d>l*M9?z}{smORU0&F{4s`Xg&=jie`yBm@CP0OqpnvqAhZ^O>Chn|y7w z+RV5CCADJ8yRZmbGGEp^FPyxXat1DY{c$)B|3}t|yv=u?$PNofKP89!^Be z5YPtI2K)fC#TIwm%rHttT#(fFN?`-#`*TBC2}G-`NI@~f_qY+PE9J(E6(#=-lM1-R zak}8C+}nFvgJKf`4H8rX-*ixJh{UNpwAAMx}|J+gy-rP6%e?4tXH=X z`K4v)3WW7Ge-(c!e!0^+w@OYW*BZ%dz`;1VG9}CiFJucZ<3%-is|Ox}+kCVZJ)@Dl ziZ!(IpyohD5fP&k$`UgwBnGO{E^yI{e$k?^!`Ts`3<&8_5h-`AFpSDqE(07dm@3134qFug%v$po$Xv^0XZG zBV!<;p>_+~b@x$bcq%V&_PW@lY2m7*Bm6dbWfa5NliXwU3s#$0^>qwz`on+P?Yx8~ zPP|1@SGZslUDM5y1Eg3vJIt8+mB=gfs1%MiS=~H=(^C)H@8MhcHxke;0xqeIWZOy* z?|ky$m}|#AM-s|sByoE0MI$Gm_6?opl-6+!OMLaagHp!QJekqs``7yT5$yX*VTB0P+ zp|*r-F?BQHQiK3AF8d)ds6FWb++_V8rrNzTeFcxaF%tEOwIy35h3o^{jSYP(SWnJB zdJn2$za2}n-Sl+pcesp4PNn3rH+mzCzPwV0X?Vsy_x_c)LhM#QU-!T;4CjlE#(aV_ zSFGFr3L~!xKBmCC77EN$^bkAUo(7xdKWO_}&EwrTd;vELD`Cj5z0q}5^M4B`Vu7B1 zhMmv-=P>Wi-_Wh{SD3JhKC@9`8}8b$6H8j*xeY#ur3nhH8TB+=x;YCCLbv8HijGt8 zb@!K;kEU*d>_jTNLQ1f-OPv(s!s2mf!=P!!YAFC{VX%be>B5; zGvra-!v?mGzwV*MzZp@rOb+jLkS67D!ktRVTuIcWwJ)v9KY~$k$O?f|rW{yJD=h@o z&;hjb`7ra3^CztPNaBK0O?Q4>(ig1?{IE~*r!yTl9C6TR0UV}EY~SM4Ze6yIiUsGYfZV(4#Lca2EYR@`B1#tE_sjZ8H%e>Nv(acd4o@(6dOn938XAc*$Q zlWM$zau$+2VZ}illxh54WbZ!-n@{xf(DJMX>ykNAIQmP@PaIyTjqIwc{ z#SJ@bYov5s@~YS!tDm59`TM=opMiF1JR%*fFu??$>xmIw>l#4q*54tEgmOtJ*mjP(^sT2=u2@y99Sr(SxJZg1Q z>-=W|_4_hXenrzG+{X!-@g|a79h=lHsWdW^HAe6g);I@9Cp@B+?)|J@dUZiC#PMK+Ds$1;j0D!#-ku6H z_w%_)e6Le$95j!K>m^}TZT*3Vh7UBpxcQu2>#jV9`$|gmx6Of1B3<%vyG&o%E=ALB z)-aI!oG+}U7hy_<>Bz(TRScHhF@A7EEnUa3k_^s+J>_eqGf=U9Bh3KCN$X)^f<9W3 zs4t$%onAUo}>+W@UH!+n&-;2;x14PPIi@YPQ$x5Mt09SB?n2VWMk}eT* z6_93VzwX247!zfsg!l^Q^)u(Vok_|T% zBP2*+(=of$5j|YBz_n{TTa=~Oqvt`I+yzEkl|kQz895BOk}{Uny(ipjru!-9_rJQ? zBliDb?u=-~m*mZ7g2C0`OS;JgJ3nZ6_L-TQONzI~xo&A96S8(+bWo;PgRAw;bF0n> z6B`#|UtzxON^Yw)w zd7 z=s`+yr$g!dV+9ox)RR3kx5;quR0&yooWp^4M>s;uAcSkNY7uVpKJlb@ju%8LE0dxk z>lj~jlua~QVy$qu6onBpPP+il{F^$9;J|LYHfTlhLj58ryiQFYs}q!6bnR+TQ4LCw zhXSWL-qGI1!#^dwH{NBoZ#WI)qJBdaWX!(h0|pX;TLNh21BnPHwjz?jOh)DY?Qq8r zxA6ph3=RTK{fuN`$Gu2QU5s)(A-oy}KVL!z+8E{I0}C%+gXH#f8-?o?_b6ruoFxkQ zb!s(OXzyYck0j9n!2rk+c+bzOUk4rGl$G8b|$>JjFleVOP}-(HOK&q zD*u)wXZ_HH9ao!N5Q;GMC`1jV*>f(gWQk@eD!BGz>5rOo)$<_rx|`3H@`rQSA)naU z&D1DX?&nwU%OeqRLe%RjAqv^6Gzdv=WrDA7#0l8Y&&{fQ7J}S9;R%=d(=3xmc%d|9 zWYhK6&KKkfKwmY`yu5ff;jQh_VUAw2;#I!trkNtmZP42{|r&a^Qf6img%3Kx zWJ5BbAOEaPLGnuT1BaZfK9?(=oY$uHQu21tFXq7FKi_IJu=yA_N0j0>^};MSLSW0X((Vj1

-Lkz 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 VNLW_WxYGp9Y9f-3v1m_J008a<_=Nxf literal 0 HcmV?d00001 diff --git a/codecs/webp_dec/.gitignore b/codecs/webp_dec/.gitignore new file mode 100644 index 00000000..bbc522c5 --- /dev/null +++ b/codecs/webp_dec/.gitignore @@ -0,0 +1,2 @@ +/*.wasm +/*.js diff --git a/codecs/webp_dec/README.md b/codecs/webp_dec/README.md new file mode 100644 index 00000000..793d8984 --- /dev/null +++ b/codecs/webp_dec/README.md @@ -0,0 +1,38 @@ +# WebP encoder + +- Source: +- Version: v0.6.1 + +## Example + +See `example.html` + +## API + +### `int version()` + +Returns the version of libwebp as a number. va.b.c is encoded as 0x0a0b0c + +### `uint8_t* create_buffer(int width, int height)` + +Allocates an RGBA buffer for an image with the given dimension. + +### `void destroy_buffer(uint8_t* p)` + +Frees a buffer created with `create_buffer`. + +### `void encode(uint8_t* image_buffer, int image_width, int image_height, float quality)` + +Encodes the given image with given dimension to WebP. `quality` is a number between 0 and 100. The higher the number, the better the quality of the encoded image. The result is implicitly stored and can be accessed using the `get_result_*()` functions. + +### `void free_result()` + +Frees the result created by `encode()`. + +### `int get_result_pointer()` + +Returns the pointer to the start of the buffer holding the encoded data. + +### `int get_result_size()` + +Returns the length of the buffer holding the encoded data. diff --git a/codecs/webp_dec/example.html b/codecs/webp_dec/example.html new file mode 100644 index 00000000..28806645 --- /dev/null +++ b/codecs/webp_dec/example.html @@ -0,0 +1,44 @@ + + + diff --git a/codecs/webp_dec/package-lock.json b/codecs/webp_dec/package-lock.json new file mode 100644 index 00000000..39878f31 --- /dev/null +++ b/codecs/webp_dec/package-lock.json @@ -0,0 +1,1147 @@ +{ + "name": "webp_dec", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=", + "dev": true + }, + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", + "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", + "dev": true, + "requires": { + "base64-js": "0.0.8", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "caw": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", + "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "dev": true, + "requires": { + "get-proxy": "^2.0.0", + "isurl": "^1.0.0-alpha5", + "tunnel-agent": "^0.6.0", + "url-to-options": "^1.0.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "config-chain": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", + "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decompress": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", + "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "dev": true, + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "requires": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "requires": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "requires": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "dev": true, + "requires": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, + "download": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", + "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", + "dev": true, + "requires": { + "caw": "^2.0.0", + "content-disposition": "^0.5.2", + "decompress": "^4.0.0", + "ext-name": "^5.0.0", + "file-type": "5.2.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^7.0.0", + "make-dir": "^1.0.0", + "p-event": "^1.0.0", + "pify": "^3.0.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "requires": { + "mime-db": "^1.28.0" + } + }, + "ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "requires": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "dev": true + }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "dev": true + }, + "filenamify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.0.0.tgz", + "integrity": "sha1-vRYiYsC26Uv7zc8Zo7uzdk94VpU=", + "dev": true, + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "get-proxy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", + "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "dev": true, + "requires": { + "npm-conf": "^1.1.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", + "dev": true + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "make-dir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "napa": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/napa/-/napa-3.0.0.tgz", + "integrity": "sha1-7DqP3gcZC2ny/kNMOVo+aUaEG1Y=", + "dev": true, + "requires": { + "download": "^6.2.2", + "extend": "^3.0.1", + "load-json-file": "^2.0.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "npm-cache-filename": "^1.0.2", + "npmlog": "^4.1.0", + "rimraf": "^2.6.1", + "tar-pack": "^3.4.0", + "write-json-file": "^2.2.0" + } + }, + "npm-cache-filename": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz", + "integrity": "sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE=", + "dev": true + }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "p-event": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", + "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", + "dev": true, + "requires": { + "p-timeout": "^1.1.1" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "seek-bzip": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "dev": true, + "requires": { + "commander": "~2.8.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "dev": true, + "requires": { + "sort-keys": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "requires": { + "is-natural-number": "^4.0.1" + } + }, + "strip-outer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.0.tgz", + "integrity": "sha1-qsC6YNLpDF1PJ1/Yhp/ZotMQ/7g=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "tar-pack": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz", + "integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==", + "dev": true, + "requires": { + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" + } + }, + "tar-stream": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", + "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "end-of-stream": "^1.0.0", + "readable-stream": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "dev": true + }, + "unbzip2-stream": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz", + "integrity": "sha512-izD3jxT8xkzwtXRUZjtmRwKnZoeECrfZ8ra/ketwOcusbZEp4mjULMnJOCfTDZBgGQAAY1AJ/IgxcwkavcX9Og==", + "dev": true, + "requires": { + "buffer": "^3.0.1", + "through": "^2.3.6" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "write-json-file": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", + "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", + "dev": true, + "requires": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "pify": "^3.0.0", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.0.0" + }, + "dependencies": { + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "yauzl": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz", + "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.0.1" + } + } + } +} diff --git a/codecs/webp_dec/package.json b/codecs/webp_dec/package.json new file mode 100644 index 00000000..bca89809 --- /dev/null +++ b/codecs/webp_dec/package.json @@ -0,0 +1,13 @@ +{ + "name": "webp_dec", + "scripts": { + "install": "napa", + "build": "docker run --rm -v $(pwd):/src trzeci/emscripten emcc -O3 -s WASM=1 -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -s ALLOW_MEMORY_GROWTH=1 -s MODULARIZE=1 -s 'EXPORT_NAME=\"webp_dec\"' -I node_modules/libwebp -o ./webp_dec.js webp_dec.c node_modules/libwebp/src/{dec,dsp,demux,enc,mux,utils}/*.c" + }, + "napa": { + "libwebp": "webmproject/libwebp#v0.6.1" + }, + "devDependencies": { + "napa": "^3.0.0" + } +} diff --git a/codecs/webp_dec/webp_dec.c b/codecs/webp_dec/webp_dec.c new file mode 100644 index 00000000..eccdb67d --- /dev/null +++ b/codecs/webp_dec/webp_dec.c @@ -0,0 +1,51 @@ +#include "emscripten.h" +#include "src/webp/decode.h" +#include "src/webp/demux.h" +#include + +EMSCRIPTEN_KEEPALIVE +int version() { + return WebPGetDecoderVersion(); +} + +EMSCRIPTEN_KEEPALIVE +uint8_t* create_buffer(int size) { + return malloc(size); +} + +EMSCRIPTEN_KEEPALIVE +void destroy_buffer(uint8_t* p) { + free(p); +} + +int result[3]; +EMSCRIPTEN_KEEPALIVE +void decode(uint8_t* img_in, int size) { + int width, height; + uint8_t* img_out = WebPDecodeRGBA(img_in, size, &width, &height); + result[0] = (int)img_out; + result[1] = width; + result[2] = height; + +} + +EMSCRIPTEN_KEEPALIVE +void free_result() { + WebPFree(result[0]); +} + +EMSCRIPTEN_KEEPALIVE +int get_result_pointer() { + return result[0]; +} + +EMSCRIPTEN_KEEPALIVE +int get_result_width() { + return result[1]; +} + +EMSCRIPTEN_KEEPALIVE +int get_result_height() { + return result[2]; +} + diff --git a/codecs/webp_enc/example.html b/codecs/webp_enc/example.html index 45b9f55c..8b9c3ca2 100644 --- a/codecs/webp_enc/example.html +++ b/codecs/webp_enc/example.html @@ -38,7 +38,7 @@ api.free_result(resultPointer); api.destroy_buffer(p); - const blob = new Blob([result], {type: 'image/jpeg'}); + const blob = new Blob([result], {type: 'image/webp'}); const blobURL = URL.createObjectURL(blob); const img = document.createElement('img'); img.src = blobURL; diff --git a/codecs/webp_enc/package-lock.json b/codecs/webp_enc/package-lock.json index b509f835..fa5ccbd9 100644 --- a/codecs/webp_enc/package-lock.json +++ b/codecs/webp_enc/package-lock.json @@ -21,8 +21,8 @@ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.5" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "balanced-match": { @@ -43,7 +43,7 @@ "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", "dev": true, "requires": { - "readable-stream": "2.3.5" + "readable-stream": "^2.0.5" } }, "block-stream": { @@ -52,7 +52,7 @@ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "brace-expansion": { @@ -61,7 +61,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -72,8 +72,8 @@ "dev": true, "requires": { "base64-js": "0.0.8", - "ieee754": "1.1.8", - "isarray": "1.0.0" + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, "buffer-crc32": { @@ -88,10 +88,10 @@ "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", "dev": true, "requires": { - "get-proxy": "2.1.0", - "isurl": "1.0.0", - "tunnel-agent": "0.6.0", - "url-to-options": "1.0.1" + "get-proxy": "^2.0.0", + "isurl": "^1.0.0-alpha5", + "tunnel-agent": "^0.6.0", + "url-to-options": "^1.0.1" } }, "code-point-at": { @@ -106,7 +106,7 @@ "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "concat-map": { @@ -121,8 +121,8 @@ "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", "dev": true, "requires": { - "ini": "1.3.5", - "proto-list": "1.2.4" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, "console-control-strings": { @@ -158,14 +158,14 @@ "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", "dev": true, "requires": { - "decompress-tar": "4.1.1", - "decompress-tarbz2": "4.1.1", - "decompress-targz": "4.1.1", - "decompress-unzip": "4.0.1", - "graceful-fs": "4.1.11", - "make-dir": "1.2.0", - "pify": "2.3.0", - "strip-dirs": "2.1.0" + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" }, "dependencies": { "pify": { @@ -182,7 +182,7 @@ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "dev": true, "requires": { - "mimic-response": "1.0.0" + "mimic-response": "^1.0.0" } }, "decompress-tar": { @@ -191,9 +191,9 @@ "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", "dev": true, "requires": { - "file-type": "5.2.0", - "is-stream": "1.1.0", - "tar-stream": "1.5.5" + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" } }, "decompress-tarbz2": { @@ -202,11 +202,11 @@ "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", "dev": true, "requires": { - "decompress-tar": "4.1.1", - "file-type": "6.2.0", - "is-stream": "1.1.0", - "seek-bzip": "1.0.5", - "unbzip2-stream": "1.2.5" + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" }, "dependencies": { "file-type": { @@ -223,9 +223,9 @@ "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", "dev": true, "requires": { - "decompress-tar": "4.1.1", - "file-type": "5.2.0", - "is-stream": "1.1.0" + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" } }, "decompress-unzip": { @@ -234,10 +234,10 @@ "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", "dev": true, "requires": { - "file-type": "3.9.0", - "get-stream": "2.3.1", - "pify": "2.3.0", - "yauzl": "2.9.1" + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" }, "dependencies": { "file-type": { @@ -252,8 +252,8 @@ "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "dev": true, "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" } }, "pify": { @@ -282,17 +282,17 @@ "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", "dev": true, "requires": { - "caw": "2.0.1", - "content-disposition": "0.5.2", - "decompress": "4.2.0", - "ext-name": "5.0.0", + "caw": "^2.0.0", + "content-disposition": "^0.5.2", + "decompress": "^4.0.0", + "ext-name": "^5.0.0", "file-type": "5.2.0", - "filenamify": "2.0.0", - "get-stream": "3.0.0", - "got": "7.1.0", - "make-dir": "1.2.0", - "p-event": "1.3.0", - "pify": "3.0.0" + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^7.0.0", + "make-dir": "^1.0.0", + "p-event": "^1.0.0", + "pify": "^3.0.0" } }, "duplexer3": { @@ -307,7 +307,7 @@ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "error-ex": { @@ -316,7 +316,7 @@ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "escape-string-regexp": { @@ -331,7 +331,7 @@ "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", "dev": true, "requires": { - "mime-db": "1.33.0" + "mime-db": "^1.28.0" } }, "ext-name": { @@ -340,8 +340,8 @@ "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", "dev": true, "requires": { - "ext-list": "2.2.2", - "sort-keys-length": "1.0.1" + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" } }, "extend": { @@ -356,7 +356,7 @@ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "dev": true, "requires": { - "pend": "1.2.0" + "pend": "~1.2.0" } }, "file-type": { @@ -377,9 +377,9 @@ "integrity": "sha1-vRYiYsC26Uv7zc8Zo7uzdk94VpU=", "dev": true, "requires": { - "filename-reserved-regex": "2.0.0", - "strip-outer": "1.0.0", - "trim-repeated": "1.0.0" + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" } }, "fs.realpath": { @@ -394,10 +394,10 @@ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "fstream-ignore": { @@ -406,9 +406,9 @@ "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", "dev": true, "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" } }, "gauge": { @@ -417,14 +417,14 @@ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "get-proxy": { @@ -433,7 +433,7 @@ "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", "dev": true, "requires": { - "npm-conf": "1.1.3" + "npm-conf": "^1.1.0" } }, "get-stream": { @@ -448,12 +448,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "got": { @@ -462,20 +462,20 @@ "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", "dev": true, "requires": { - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-plain-obj": "1.1.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.0", - "p-cancelable": "0.3.0", - "p-timeout": "1.2.1", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "url-parse-lax": "1.0.0", - "url-to-options": "1.0.1" + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" } }, "graceful-fs": { @@ -502,7 +502,7 @@ "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "dev": true, "requires": { - "has-symbol-support-x": "1.4.2" + "has-symbol-support-x": "^1.4.1" } }, "has-unicode": { @@ -529,8 +529,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -557,7 +557,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-natural-number": { @@ -602,8 +602,8 @@ "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", "dev": true, "requires": { - "has-to-string-tag-x": "1.4.1", - "is-object": "1.0.1" + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" } }, "load-json-file": { @@ -612,10 +612,10 @@ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" }, "dependencies": { "pify": { @@ -638,7 +638,7 @@ "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", "dev": true, "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" } }, "mime-db": { @@ -659,7 +659,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -697,16 +697,16 @@ "integrity": "sha1-7DqP3gcZC2ny/kNMOVo+aUaEG1Y=", "dev": true, "requires": { - "download": "6.2.5", - "extend": "3.0.1", - "load-json-file": "2.0.0", - "minimist": "1.2.0", - "mkdirp": "0.5.1", - "npm-cache-filename": "1.0.2", - "npmlog": "4.1.2", - "rimraf": "2.6.2", - "tar-pack": "3.4.1", - "write-json-file": "2.3.0" + "download": "^6.2.2", + "extend": "^3.0.1", + "load-json-file": "^2.0.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "npm-cache-filename": "^1.0.2", + "npmlog": "^4.1.0", + "rimraf": "^2.6.1", + "tar-pack": "^3.4.0", + "write-json-file": "^2.2.0" } }, "npm-cache-filename": { @@ -721,8 +721,8 @@ "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", "dev": true, "requires": { - "config-chain": "1.1.11", - "pify": "3.0.0" + "config-chain": "^1.1.11", + "pify": "^3.0.0" } }, "npmlog": { @@ -731,10 +731,10 @@ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -755,7 +755,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "p-cancelable": { @@ -770,7 +770,7 @@ "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", "dev": true, "requires": { - "p-timeout": "1.2.1" + "p-timeout": "^1.1.1" } }, "p-finally": { @@ -785,7 +785,7 @@ "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", "dev": true, "requires": { - "p-finally": "1.0.0" + "p-finally": "^1.0.0" } }, "parse-json": { @@ -794,7 +794,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "path-is-absolute": { @@ -827,7 +827,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "prepend-http": { @@ -854,13 +854,13 @@ "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "rimraf": { @@ -869,7 +869,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -884,7 +884,7 @@ "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", "dev": true, "requires": { - "commander": "2.8.1" + "commander": "~2.8.1" } }, "set-blocking": { @@ -905,7 +905,7 @@ "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", "dev": true, "requires": { - "is-plain-obj": "1.1.0" + "is-plain-obj": "^1.0.0" } }, "sort-keys-length": { @@ -914,7 +914,7 @@ "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", "dev": true, "requires": { - "sort-keys": "1.1.2" + "sort-keys": "^1.0.0" } }, "string-width": { @@ -923,9 +923,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { @@ -934,7 +934,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -943,7 +943,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -958,7 +958,7 @@ "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", "dev": true, "requires": { - "is-natural-number": "4.0.1" + "is-natural-number": "^4.0.1" } }, "strip-outer": { @@ -967,7 +967,7 @@ "integrity": "sha1-qsC6YNLpDF1PJ1/Yhp/ZotMQ/7g=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.2" } }, "tar": { @@ -976,9 +976,9 @@ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "tar-pack": { @@ -987,14 +987,14 @@ "integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==", "dev": true, "requires": { - "debug": "2.6.9", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.3.5", - "rimraf": "2.6.2", - "tar": "2.2.1", - "uid-number": "0.0.6" + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" } }, "tar-stream": { @@ -1003,10 +1003,10 @@ "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", "dev": true, "requires": { - "bl": "1.2.1", - "end-of-stream": "1.4.1", - "readable-stream": "2.3.5", - "xtend": "4.0.1" + "bl": "^1.0.0", + "end-of-stream": "^1.0.0", + "readable-stream": "^2.0.0", + "xtend": "^4.0.0" } }, "through": { @@ -1027,7 +1027,7 @@ "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.2" } }, "tunnel-agent": { @@ -1036,7 +1036,7 @@ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "uid-number": { @@ -1051,8 +1051,8 @@ "integrity": "sha512-izD3jxT8xkzwtXRUZjtmRwKnZoeECrfZ8ra/ketwOcusbZEp4mjULMnJOCfTDZBgGQAAY1AJ/IgxcwkavcX9Og==", "dev": true, "requires": { - "buffer": "3.6.0", - "through": "2.3.8" + "buffer": "^3.0.1", + "through": "^2.3.6" } }, "url-parse-lax": { @@ -1061,7 +1061,7 @@ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } }, "url-to-options": { @@ -1082,7 +1082,7 @@ "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { @@ -1097,9 +1097,9 @@ "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, "write-json-file": { @@ -1108,12 +1108,12 @@ "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", "dev": true, "requires": { - "detect-indent": "5.0.0", - "graceful-fs": "4.1.11", - "make-dir": "1.2.0", - "pify": "3.0.0", - "sort-keys": "2.0.0", - "write-file-atomic": "2.3.0" + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "pify": "^3.0.0", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.0.0" }, "dependencies": { "sort-keys": { @@ -1122,7 +1122,7 @@ "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", "dev": true, "requires": { - "is-plain-obj": "1.1.0" + "is-plain-obj": "^1.0.0" } } } @@ -1139,8 +1139,8 @@ "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", "dev": true, "requires": { - "buffer-crc32": "0.2.13", - "fd-slicer": "1.0.1" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.0.1" } } }