From c05c4251dd11b067240f2f2794bafcfd9c20f658 Mon Sep 17 00:00:00 2001 From: luzzi <christopher.luzzi@student.reutlingen-university.de> Date: Tue, 29 Nov 2022 18:14:36 +0100 Subject: [PATCH] Afg2 --- application/.dockerignore | 23 + application/.gitignore | 1 + application/.vscode/launch.json | 11 + application/.vscode/tasks.json | 39 + application/Dockerfile | 10 + application/Komponenten_Uebersicht.jpg | Bin 0 -> 242601 bytes application/README.md | 34 + application/Sequenz-Diagramm.jpg | Bin 0 -> 41781 bytes application/app/config/auth.config.js | 3 + .../app/controllers/auth.controller.js | 80 + .../app/controllers/user.controller.js | 9 + application/app/middlewares/authJWT.js | 28 + application/app/middlewares/index.js | 8 + application/app/middlewares/verifySignUp.js | 48 + application/app/models/index.js | 12 + application/app/models/user.model.js | 12 + application/app/routes/auth.routes.js | 24 + application/app/routes/user.routes.js | 18 + application/index.html | 63 + application/metrics.js | 50 + application/package-lock.json | 5611 +++++++++++++++++ application/package.json | 24 + application/server.cert | 22 + application/server.js | 127 + application/server.key | 28 + application/views/login.html | 51 + application/views/register.html | 57 + docker-compose.yml | 17 + prometheus.yml | 11 + 29 files changed, 6421 insertions(+) create mode 100644 application/.dockerignore create mode 100644 application/.gitignore create mode 100644 application/.vscode/launch.json create mode 100644 application/.vscode/tasks.json create mode 100644 application/Dockerfile create mode 100644 application/Komponenten_Uebersicht.jpg create mode 100644 application/README.md create mode 100644 application/Sequenz-Diagramm.jpg create mode 100644 application/app/config/auth.config.js create mode 100644 application/app/controllers/auth.controller.js create mode 100644 application/app/controllers/user.controller.js create mode 100644 application/app/middlewares/authJWT.js create mode 100644 application/app/middlewares/index.js create mode 100644 application/app/middlewares/verifySignUp.js create mode 100644 application/app/models/index.js create mode 100644 application/app/models/user.model.js create mode 100644 application/app/routes/auth.routes.js create mode 100644 application/app/routes/user.routes.js create mode 100644 application/index.html create mode 100644 application/metrics.js create mode 100644 application/package-lock.json create mode 100644 application/package.json create mode 100644 application/server.cert create mode 100644 application/server.js create mode 100644 application/server.key create mode 100644 application/views/login.html create mode 100644 application/views/register.html create mode 100644 docker-compose.yml create mode 100644 prometheus.yml diff --git a/application/.dockerignore b/application/.dockerignore new file mode 100644 index 0000000..cbd3fdd --- /dev/null +++ b/application/.dockerignore @@ -0,0 +1,23 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/charts +**/docker-compose* +**/compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +README.md diff --git a/application/.gitignore b/application/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/application/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/application/.vscode/launch.json b/application/.vscode/launch.json new file mode 100644 index 0000000..95f1f19 --- /dev/null +++ b/application/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "configurations": [ + { + "name": "Docker Node.js Launch", + "type": "docker", + "request": "launch", + "preLaunchTask": "docker-run: debug", + "platform": "node" + } + ] +} \ No newline at end of file diff --git a/application/.vscode/tasks.json b/application/.vscode/tasks.json new file mode 100644 index 0000000..d416da5 --- /dev/null +++ b/application/.vscode/tasks.json @@ -0,0 +1,39 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "docker-build", + "label": "docker-build", + "platform": "node", + "dockerBuild": { + "dockerfile": "${workspaceFolder}/Dockerfile", + "context": "${workspaceFolder}", + "pull": true + } + }, + { + "type": "docker-run", + "label": "docker-run: release", + "dependsOn": [ + "docker-build" + ], + "platform": "node" + }, + { + "type": "docker-run", + "label": "docker-run: debug", + "dependsOn": [ + "docker-build" + ], + "dockerRun": { + "env": { + "DEBUG": "*", + "NODE_ENV": "development" + } + }, + "node": { + "enableDebugging": true + } + } + ] +} \ No newline at end of file diff --git a/application/Dockerfile b/application/Dockerfile new file mode 100644 index 0000000..a4c9aa6 --- /dev/null +++ b/application/Dockerfile @@ -0,0 +1,10 @@ +FROM node:lts-alpine +ENV NODE_ENV=production +WORKDIR /usr/src/CLOUD-COMPUTING_2022 +COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"] +RUN npm install --production --silent && mv node_modules ../ +COPY . . +EXPOSE 3000 +RUN chown -R node /usr/src/CLOUD-COMPUTING_2022 +USER node +CMD ["node", "server.js"] diff --git a/application/Komponenten_Uebersicht.jpg b/application/Komponenten_Uebersicht.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b9cd35e6a6082514c6e6b30c7b27c359f54169b2 GIT binary patch literal 242601 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 XCzO?L81OMglN!pu`eT=2u;}&A7TWg9 literal 0 HcmV?d00001 diff --git a/application/README.md b/application/README.md new file mode 100644 index 0000000..81a174b --- /dev/null +++ b/application/README.md @@ -0,0 +1,34 @@ +## Documentation + +Socket.io Chatroom for Cloud-Computing +=== + +Diagramm provided in the repository. +Code is commentet. + +Used technologies: Node.js, Express, Mongoose, Socket.io, JWT, Cookie-Session, ejs, bcrypt + + +Installation +=== + +#### 1. Clone the Repository + +```sh +git clone https://gitlab.reutlingen-university.de/luzzi/cloud-computing_2022.git + +``` + +#### 2. Install the Dependencies + +```sh +npm install +``` + +#### 3. Start the Server + +```sh +npm start +``` + +> View on localhost:3000/start diff --git a/application/Sequenz-Diagramm.jpg b/application/Sequenz-Diagramm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7e9f31c517e767d1bd7c8f051013a4b4585fa1c9 GIT binary patch literal 41781 zcmeFZby(X=w=bT0X@TNeph$2j!3sq-P6$$5f)of&ph&PHZ7Hq^5D41hE&+lS=q~QX z9X9T?xWkYAp7Y-B^W68yeb4<p&;8>}o_yz%k+s&$tnb*G$@Td49{?g{1+W6()-3?w z*3AcSy>OcyEGujJN>g0{tRnxnh}%?v8+Z3P004J%bJ0|kd8Th*`0UTHzdJJv*EfI1 z|G>YYdo=ndbpT+9=O4uXXF+%{OIM4VL_cr7ZZ0>>Z-j;2U^44}!JdC&^MAn+e_|JH zP1&0?pKdU_^<S|0U$BSU8@HP@9e<{`c;oUXp1#52a0kSny#925N{nymsH1h`>)(8z z0$c%_07Zbz4gSCCe$}T_1_1El5CFIn^DE380{~P90svH#zrt8P0RT@v0sy%FH)bwo ze-q~J&GWXE6#%f83jh!p005-l0f0x)zYF>+@2|G_cgp(gCePEGays37tN{)HOTaS# z7~lx70Px-*5a2n0A0T`^1&{^Yx&5d6^LgjS-MxSJPxtWt{d@QE9zJ@6_Ye>75&jeW zM~?{~<KYny6A(TjA|fVwgik_BLPUCliT)&V>(88b?moQ9Nc0%*@lELep}YPHAbxl| z|2D^+TTFo4#JBDc-@0xA(B0_nEx?_d$F09t!GrsE?>)SOcl*z1O(Fo`{;k`0?%%n0 z_rbmUw;$aB-2A$G@BRbgha{wA6pVTaBjil{l*}M$GZ_v2cq$eF5lv@zEpv~LIJ_6= z%BmrtAT^tiu&kV-h0S|p&e9D{+CLfIu>3o}8~=vj?K=<tWcZT!<^{WR`|j=g5ANap zONzfSBqm|xm%gt-u4U$2{yQl%Nbo)Kv#iU9fn72t0U;Sp?6;rSlK}i1qPL0f5CfzD zgEl!~Ha?d`UrYG}WA7tb)wpyxVV!QzN2{M|D-2gZbynTUrp93M`dtMC__6-7FFeC0 zP2w}_+`8>AI9=&Kp!D9Szfbm)ylZ_WXR-b%qMG?P!S!I2vTPzkhD`Ak`OPLG_>^v4 zb91>eTP)E0dzK;_elMr!(*k8}#q-We<d18>&J($_dfm0ChpCI*-SBIGntwotIq#B5 ztrS>WPUq!*+CD!+$-oJgCOA_}vODoeAab4e7L<=IEzh4sfzN1R0TlGqtF<zLMw4tl z)+c{O8KqF%%gHo;1~Gp4`*RPD!lLK+6dO;wvz||{zev?&6aT$6W?|AZDJ%#Q5C1fX z`yMNJ!d}g+c|0~e0K)WqO>h;=1)Z_{j(p^T1T`#G)ajz1$|MV3dbnBuNqSk8!FkbA z3^chhIVEf`J@gUrLct((6E#tn@IAm1pT2kRGXdkOxTsgSt7fFKW~4@8t$mnvkl2Or zTtd2kl4YUDiTR7wT*>+$FSq+EU8brfXNKChPTX_MvqNbpv-|T4UQkjp5L;on_pH=f z;uT(Jpe)&=T}@`lc5GR8?3Q^q|2R`xo{9+%qT{p5cU>JWml*#!xULkX=2Evv7Y$Q1 zz$tCG=F3&VJ1oo7(sJ*;tM`QKE$O~l6s~!0Bo7bMp3a%FwF*20XK_3N18sPtRYFn> z{Vks+QH#N;MYC8&CdIlwOR%0q$-;IyR;RtVq*1C5I*bw9i%stxtrwe&YinK7IBlcK z>6llmJEz=}h3)?+DQN8JpDgT7P`!Gyc91S#S@CQr>2XT8tl)Zm=$m904S{G`LsctN zt*eqb&gczW79{bGeB)H4(}CZ2Q<gG@3!%r?00+d-C+3Ga78LK{Ld_+mTFBAE51G_? z!<pxmf|0YJsh@d0A-L&&SN<ub#6^vgqNV<%w-9rXs8v2XNhW3hgE@({ol&sDs`C@4 zwaMsE!Zn_f56})hy#{d1Raao?dfpy$o<TgUgYwhp8=Z;grsk~WV{DF4=A%@WNBr3} zf$}NFzcqW4zSdNTIyaiYzgrmJ@+>ZOFq`E_ibR0#bM*Izl$GcbS{;w)R@}&8!S<No zC$XtYD-*1KPdhX{F4sY4$mss=w~rqzEan+SdAA+jelK7mYVXBAPaY>!v#w-7GKe1N z+c2474Uo}}r{tijTddYa)a-qhX{?A=4%zL4eTZ3vL=$*`P#2Ni7I3QxN`a4HO|9A; zqeg1D<1!_PBZ=8&J~{$-MP2362h^S^4D-yLf1(C>KhR-(`GrPoYw}8m_7t|(+c?t_ z;CvEN!bUWq1dI)u;A`asI{Jqv9<NA_fnifQi_|VAimtCcs4m8qa~zHtWKygkJe66W z6>OzZWH2ifv)+h8<}TSbNhSilP%|~KxMU!t1I6}qiLv&=1I1x5#SRE)Wfyejw?|i& z$a+lDve(m5^~jBick0DJi_s-Y>l2w9OQLo1xrv@w3!Dw%xN`2Z+;|UhDrn>a^Ey5y zht^yX=@KoJzdq2i9Q2dMIx;>2)1U^40vY9CZyjK7DSltOJ2S*-`dal1bL{AgOOlwV zTy5mA@TtdKVhpUf@k?&gcUQ$!ENyqvF$hoS2)iJ5nH?U*`LfGqH0wK~t-vzqj5}2R zJR+ofO_UPll43|#N#lT;g{X~as3vWl+df*$o*-n>>hwGdkBF7=vlNC3L-Sdnj?!y) zKwz3Un4Af#mDr<V*{^&>#9E3ei$?+}D@&0iy}_xvt+iVp^Lmb$1f*^y4RY*n@rQdb z)JNLlk<Q6I(8nTS9|byMg}b2J!ufaOla35r(Q|zKN$L)5L|%~|PgY?o(k8DaTjyLz zou9p=*G9xD3$o8`=EYf7kMQKSTkzn<@0C4Bbq&Sbe^GZ<xm@~t<jm;uSTD9SR{=Vz zY>*rdW~`1EvOI<==yi8BpaPhGE_ZfR2-(S)>%%lYO)$;gac1IOu~7DVgpsaODwabq zF0uD6iVVYSG<{U>M!qxT!(OP9uN|ke=jU#V&(O~a<z1>7S1+$>IN_EX=e`89VvkT8 zl_j=2ulq|i*t?8uA0lE|c9c&Ct<nji{TT>84(agv-OJba**SW(*mNN_K!;s#^t@tY zSeh#8?|JL#a}7YAFf4!V0oe!#D%8)&hb`YtI;Y!OW94Nra90u}RYBr5gECoYlR=K` z=qwD4PC3gxos@Li7>685S^f16R#lW7Ze(}^nQT<g5G@K+NNpl!Ihr%;2^J;~xW{=H z2gBNF;<Xt8b1|HPdDVObopLbCQ)=obLSr>U13y<B;VbPWC2E{m#N+jJIRtGisQA5N zmRODKd$m_@DOW_bT#^aDp6zjuZq&l{3|>Yj3lrk<(cm&)JSTI|HkY#IH_dO6@?Dvy z!n?QDiHOkYos_n0z_N~#iF8_?{L(GkG6X-=c9fZPoA&995OMxUdYDQ_M?}OIkNUq1 z*8drN^3ZD1ILE7+NUYx;vp&o3FI1FM_tM2-gSiVqKq0D@A<ff5jZzxUobs*KNMEs- zzhtPS?BsrM4Iq%Y229bcUjydQRo8&RKm3QZo6G2fvnQ%`>1vZKa$`HHdXk6jMDlZL zL+1Kk(Lo0Ygi5Tk*4#`!(8)#@m2mTKabkTV<XkQXs_Dje_CJmM(WqejCLE5EuM4N+ z<oz(OpREk998-iBIb^BYJ>3ez(u)m6D1fGOXk(7et$X5<Ibb0pwOf-uj|V19=u_gI zS(`iHHayQz1N2=LpPU%0_6}(Um25}R@h-V8TGr)R5fKs9bR?C24Rve1qgK>(h#rqD zCF65K1?~06$nG%_yitm_?j^-8bSTG?IwP|=U4k=Pl+_IXsbWQz+cjY3tyqzD`@oRu zWR5>|v}DDYV=CLvotSnDIi5cx{3Cz<o?BsSZh>?GgN#Z(CV+G6n%t-0ZO*(LEL{=( zd2(-0sLog5Z)U=T&-!KEve5~4Gvd_M{Le<ex=Xih6DF4yh@F9zg~8N7tL$_>4$s7z z;n!}5B$i+fT~ZxktdQ1a9k@d)Qeb#O+3?s9U4lK0RF=4q49E%19M<uS)a3&EdKqoA z1a`f5nA(0Rnyc3b(a2vJol4Gbebx!j!%a22F!RNRn?7NWyc{_5V<;j{wX<6lf}f9g zd8|(QWM-X{Y$+$mR^%r(Q&khvSaV8Di@LIQZ@tp)(Qfm_f1%1z)2$LY+VK7Dr#RG{ z+mEt5f5q*4dyre#faX_CNA0fQ55H%po7#C$90|Ps&AX{m9i`55P`5#6I4!ApS{nl; z@p^@lK%tnJc-VhbM5-u`YLQB=?OoZ_Qpb<z4Uh2CpYEqSp?jYEoAKC>HG1yW3B7<H zuv(r$zL}W8erdv!ce}euy<NM1V)NxSp!VFd`S|#8&fNMV|BF~zpXcII{%`8wS24NQ zfKEY?X07Ne0{XR+=M(;(rE^k5fCnxw{(LL$@TdD*hF$|&@cFJXOX!EH3&Iiiy4It5 z;JNq_BP8|%#yrvf52!VDO|JpUJXb;D2LC4g991;Q<xcucbVP&5@9A$!k5{h*>n8Et zGpRoyh6m6?5QI}rF1_=rF~YhIy%@y-aaOznviE-t-(#Er;O`s#XD{Y|6u<lB8t|jr z@ES1kQ)<1yY@D#s|9H9Bf8&JVVC4DMgDhJqm+BqQ*@i32x3d61nfBjk-T5i*ck<-x zZtSk&R#W)WoF~K4O~YLStbgDbz7bZLy@+I`)+zObl;v?{>MFP>q(QU_ZG%vg1Xjr( zm^HG2wMb&8#uiiQX@7-C@BOh`2OCZePgDUJky@a{NnVJ$Zg8%ifR3((msi4>p#4}{ z&68X$-!-XBg$A$9cV`HZ+2EXaE(bWLqJ;k6)*Ex^#fk@cyvs(!gH^7^-%woLi5@aJ zn*Bpnvf3#Y)(^?ujZTQ2|1v$@-a9%4+jA^7J+K)om3YITmUI3cJ3O@LV6UJPBj2=X z+S|Iu*jG5-RM2c?j9pZk+dM9j;$hfZw4+D&9-_P-s2)Dw=le_Me=EK>RAdyqMkg}d z+{5-Qr+Cs}Ks0vKijftY`z*J?PaK~_MQ_O+Z%YLNM!1(`HzE|3RTU<WfDG>w4}Jnd z{h4-DjXdmTz1hqc^uJ}m7l+7N`YyhF1<-Lk`;Qv%KZ$!HW_cm7VTsPNGH9bNtZ7x@ zZfp}uj^X|}K|$D#C|HY$2tC?L1hRC|=vAvkL|Q@9S}fjQ(g<z#8$B4xZ#<9?ybW)F z@Q(1yllRDR@!5=1llOL`Gwjl^|3OV`{jF_GKe^3mJ)yHQlrPmsD}H$8TlNR&d^1Ku zest&V=sBBOfzMSbU)z)Xrq}CxJL%hA)u&!Mg;$X@hpQ!b)`#c3DU7btX)C%8M&Zjh z+O;yg{G=x*x}2fKijF6lGx`ipx6bG3Uq<`tPiC>-#hmhkG5)_)B;YTa<85<iaH0{b z{x@Z@{0j?u`D?%$|25$B#y?ZP1{_C^{6<{5Jl8d~UVxd(FyXx~On42LSPS#mtgbkF z2Vl;**+f9dM^CpcFbH><mLSN5UzqTiQWzw3Y=!KX>YiJkeFkM>uA;Iu<Tk>e)yB3+ z!o#J^H#Y3cz8HSvmX$*0ldze5K7M>?Xx`3zNu!kU?%!>{{rfp~Sp}(@eH`R16^W@0 zWG|d7678t-e6~kxa^|lAy6&LW&Q*`)iC|4XT8j3Xsb<`8gI=dYc?YKGQZhR7x1yKK zxxs{T#|~L#>NR8HqYRe#xOm2wqzY9W%BLvsZpJIKxjWr^DTNCXetWe9eZh(e6$ezT zxRn)2KX~;S#hf}r-WtgGW%odQPj6+rNNM}lc49QmphN@b_OmWluR6zA)sCnIdX~I_ zKDE6hFAwQG<h$mn)w=A*)E)foJgf~CVN1w@ZR{gE?XDCZK1JDO{yez^l3F~rSAi&~ zp%2Bppe6S4wpDm{FJ(p78+r~<J#etCENQ0ag&Uy+V;e?bYw%UUvS6D0r(<Or+iwCO zjT2A%PqsMQh{dA^!K)){-MmFngQF`eAuH{1>p0atGF{kn8~8(68)?#d)GMR53L*Au zz@#x-IxS@{*AHwEo5?C{uV}Tkc&i-h>`Y3{+GF8tr>yyr<p^4+8SOiEz(nX5GYpF# zhfz-`WG+#Etk)k{r9CFz#Av%h!2)n>0EL*Bh=5c|Tq#3q^}F?<JdrLBiLOPJTrqAx zS%grpVZXc&Q0aAb0^<a1Doh64E~dDb7qVCg+p!Xf8{r*Xd}EW@qdfEeUS3E{&KCkD z2NXom>Ac&w`cmYg?RLL>cA;AN7v*5KaGF)BwBDAtT#uS>rjs93?VQ(%!7Ia9XjIKg zCxTNsl2v);nb;!};D~c5=fZt{Emwy&jVI)Ok`hR!Zw)RipQ}EPvL>q@(t^dJd?#gM zyRhRu;mJs^!c%VLO=a#Tnw=wvhP8~E5X4P$+>d2_&9d4s=0KY|*R3v?D2Jppu9K4& zR%0w|n?;@N>%!93ojqx?WN-=Gs{LLdO8d^?Gdj-J8uM0>>2*Y>y#PyI$Efvwq`)Ne zTVMLYZoxjr{*LWjEy;rpvaV3#ysE)2S&hl4TEb%St_@cnb@tPg>2PzFcRx(KOO`k2 z4mk5Qt_VUkv$bfvS_Fr~*{*ggc@~x91_ZldnIIk<N&)tks6}&Eyk|qa%_ylyv#pyr zoWx}yd^ynR-VuxV&4x$(#H5xZ5|^oEHGm|}wdC?Au*`|5cFLXLrQ>@BRPQXB!Nr>A z!Ln%E&WtP{!^SEi83{n0pN5S(q|xhh&3SKSu=t@x1-f2&Dr%KoYZ;n#+o~dF;rNSU z`;m3cyy9oL70-ylYRcNI3#AB@bpObuMu#(1t&lL6I`O96masdRLOb7T$QH`Q;*tc; z{(-w#K4ca|sf0u)V$sw%ESt~}F4F?xQc}EI7)m&j$>LRzOA#n7JQs5+w*p4;z>Lb# zwj%i9%R=mxHUlZ8&(fXX`C`F@lRABTToj19FoBY&AwJRGQ8=NJudiw~(3J-)fr2TG zcN*jPb7}=?drVonT^~&uoQ!Cnp<a-6f1D1=;uXbZDlduK8j@0lLa9-`3NR(6<y*rO z8x13)Nvy`)f?Afi1V}4YRDuQ%v4a+)%9jPQtgJLyTliSW@W*{10|?R*o*ZtMrWm&Y z#L*c`N5wlz0pD!V#Uu0Uvp9fzO+SZQ1rMG|k-cys?TMX^J$+IlkU4j&(|oqOqu$L^ zSWkC%!Cei*q!TdRGGCZ-ES#iOoDdwXqd0%S@Dk3~wP!4!*9|f%ed?V{my&<TE!&1} zEmW{EB*<ke&>YN(NZ1GB3)?NLt>Vsu+ye|;474lBJ#oS#Gb5Fdw>qhpyRz__a#mVS z-g<t@zDCPWD3m3O5+CL*dgH46(xcz?;dqY`6v8=I-C3TtUm1#Fj*yOMH+aaJ>hrm{ z&lM61S~iofWv^yp(&$GBD9(d+_ySh;u@&v?Og$K5`{;R|xdORU%~WWy1o@iQ<m+UI zspU5lH`Q`#1a@WADQ0bPeUO$j{B*@4a<W2^HMYDS4@Yn0H!&P_o;45)uXFg^=>Gi! zm_xCecRK6ow3dESmjge|(e84q350ND^>mpeiu5NPJi*|nS|4#u6)|_D<U{7E_U3#{ zi3cxlK@<H~QVUB&?9?KElKa@FX8RApBa`&5S=o$LN3L`6k2Sr*&Gnh(uwpMfFN*kH zzQ2D=pWwKuS!7ENV&2_iN#3cfSwjt;qI^EaXD{qZW3oC<A$-o6r+uOpxj*@fx{T^6 zTpxFzituTXmM3Y~V8=Rv=uy<#ew`9e3S4oIm_2%f+*qv7!Sz0TbC27%0CM5&(Y(#b zFSw!z2^yr6nedr%n1-v?1u$#b=$<39B7(lc+<rVr4=#sGUY!;eUIclxz^%&h7oJyx zvjjhaey^FYoP^rm1#5-t4fiTo34Q&?L*H#g!Hdh@KIhCMAw*wiq<oTcS-JDQc^a|u zsgQMN)6WfzAN`X<$uz`9o_<(Kelc*iQBP^1(9jFi8^;CwjHP?A-SQDv`aLb`+cluK zGK~Ef7knMnHsPyEOZ^K&!pIA5lMk>>)$X%lk?biZLEpwEw?&e%Yru2iOmeMIcL|%W ziqh~F*M*aYd+M*jm*;d*#uW{g2`5jtr}Hlj-oStRMfVrF&!^+E`9%{|^~HLAy}F?$ z7=kyk&9g!U-5j5RDjAZkGqPm60Br=Oc3G-HlXy8*T0FS&p0kn<DpTAh8{EOBB|*7c z#D=+epeb7(WZi;xWTfh|h*2dTR5ppy1A74-n}Q7id(i>wIzyj$A81zB<C3gqN6pBO z$!Wljd18`YDdC$P5B}Y$k*xmi_%Mr_`>O6C;ZZZ$De}KL0?lV_c|Y@!?m@l$-7DF9 z(J4%G@MC7CmX$M$0^Itrp#yihrRIi_ma{uW1(2V&eDTAyiA+f12BcHdka<NUNs~aa zjuO}2+kMb3+Srrtz)_x}oVTfl$Hf=z#gmLOi~p?Fs;#?#ViCl$5qB-6$*iudW6)m( z9qo;|ydE@1Q+5!>F32l;NvZMclE1GXU_Ymw$?7lgmHhl1?t0?7Bes4aXYqy$8-8eZ z3LVzB9T#!7o7TU)ZxYg|gZ-GlfLP9JgeAlCUwU#V>2>js9}@_kG-gV;8`5TpJ|=Nu zF=6H@j|keMviI758xuQjw8>M&As74>Vg+WQ<m;~8WL@V~WCIJN;MG=To5ku+b%)H? ztja%(2Rh=^7})r!fpW?dY~`2uSDyqu8}llVF!hBaDig)1zAd}*ce;7uRdI6p99lgG z3~obM^anw4)f%Jax`&8#N1{)n?rqR_mio<y<RqmAb}gT33aK<gC9J8o2922nlfD~8 z)7sC-&*N51ci!fl3aiIv?1Wt=#VRm6$qZ-l_-2ULLZWigq>15JF-`$VbC9HQ_&!Ix z2cf7%cxCyHU#dB1)y(~*ZZb3GAW${-*~B^|mP5n9@OZrt!zmLND<J718vS}kq(zp5 z+d@lrkmonQZ<Du+*)z#(9=;5*SwEz+g`ndUmo}>Ffcb&x{3M#0Kk4d|rc_x!pr)u> zLEK?&mn4)VQFok^Q&3S@xwQOF-yGU??#@R-VsdsMmVIjU<wpn3-jr_g4)ld=w0yKm zehf;pc6h%##8&fhf`!_^SS<#5lKb_-9kpb{FJZ49rBeHQ<qwJScGxUjF}|wbfDyB= zCPR^sKz_4^f+_Kuo55hYqz9l^k8zA>9jjq{nBdZ$zLz5wm#)ZMBt8@dA5BqPk*nl+ z1m3cOCcMWuSY-56NvG(}2ny9$$;XY0Pz$V-D~Hs74aw$UInM<iX~L`mw}N^d3z0^7 z62T02K6O052E1FSJo67;@NBW0Q0onlL2V7>a4flD!n=YXv2nAS!wzh&%TrFoAtP4| z_WP<bY8mv%^{9+`rt+}d!U}iIkIfLZn#v{`MT<CF0XA)jQ;uATHiIa<JSc6*WGx9p zbDu2)cKR{Y&3R8jOS#8fxp3AHrMBPY8%LbLyE0Lj(s3o1*C}VJB4V5;02O=jv)m}@ zo{1LO@++fp1<OR7Pw^qyB#~N55LyYyWsPx&0}Fuje0Li}G4dD*Uy6G?#)i8u1iAI} zh(G6*U^h24q0)>T5EiwpSX}!b{v4i!1x;YAQk<cluI?LZ{|6B`>o0?&KHXwt%p{33 z_j)VBfj-lXcm31f5gyU!Cu2NZe>@jYpmQ-~;VkftHaCJwe(*|ReJh^uR2t<6Pm@)! zY@FJ9Yh5{~@k0PVmr`aso~dN@zUs#JJc2e6mI8<^8^PUbf+nPb(Z>xG^iq8TWa!a+ zWh@(Sjseb!yw_7{TkH*%oUJ;}HdwlU;D~{s&da9^DeQSI1+yDYBF=KV<b3;tvd@sY zah0Qj;4Ex?`_J2Li)BuHS=*svlY<p2tjDiwReDZQnS8f-zH04nEhMY)dx;{>wVnnL zkJ32vQ*XYkFJ;V1dZk#`X#KD!+;z$~q~BaJnRZ0mWPI|w`tKlb+O7_NV#ktBVuJMn zRb^%4C>)DeSIBUhiO!4otl>1b+{9o=OMtth%@!^L95wQxC?7S{WivcTe-Z(Yvzc=R zbG5^dr<(nH+%UX}8-0ErW2bi`yg$sit!L*2>)3P3a#>d~9uHq+nkCR~X6H-_;wI~C zS3p`pZ;5QQO38^ff6#Z8rKHnTWT+@U%`IbBQ$~fVb0ikpI%n1W9vhXd#A~f-3z~s_ z*k$lKYX{{-HNqQFE3bBT*h(6!pF*pY(|KAdb5#ZxSX1P3b0+%{9qRK_@Sc!e{ix6- z&*?AqjP{U9>;td7KStBoZXJ{AFGkdz)=#n=u_R|zikphIP2-jYF_br}+Bbsf5&`e@ zzpD>@d30L;Sa(Ifl^g3-qB8_S$Dr6Nj6N)8!4_0oviT>K382gg@E(!Ajcs{bWd-$U zV~agTi#}L%drIPlCNr*zakTT#>EQ-G$_lKJYfX%ecAYA*58)=zzZ8aW6zU^+*|V0O zmMW<0(&BSuy_o9FR>*jpw+Cf;7H5Uk@G}wRqPyD*&wH-CiJ!z0D!4Zn?N<w0Qqmgk zmrNMJ%S}~I@fmbbutEReD8@64FHdV;zod7xR2f#to|7>r*kz<@SAC4oX>rjJ8baI$ zGczYPoNAVmF#>BDz6+Hf)>S1Ys9AcdsfVlN<Rd*_@n{gM_rB|2^a_Y(9F4YEW|kQZ z%o<IDWyL8-#oK>m`V{Uxo4#DA)04Ac@!k8?0O!GI=NCv+U<Z@!-H$~*%e426f~=r4 zDrdBpLc`k%j(bDG(cwem$0kFxIpGGDOcsxgzA1_)%(}efR6J587DSJA8Ljp;bc8D= zy*`B{ZHdhhi(x2FES4D)(IBH}LR(H|<g~3iZYtdV_dZxrl1Uqi8T{i9D(y`L@1%<# zTyoki;bF_<KhtySKA@2Fq~#e145Uc3BY|Xb(=Bzy_r83&CpCx20thr6{q;8&6<G~? zXO;Qn7rjkh`6Az6iW~WYU_!(J=3Gy32LbS>A*_jSJ<zJCkdBa>dBeTIf}D~tEDsOR z&F<`k2N*J7UWvw-WuZG|h)_(*O5x^AJnvk-{+h)6E4q99s^;B518djr7N6$+S&v;m zr=x7VDT!uc)TuxRggGW-UHEMcipg-$PGI6?`nylrU_-Et1_vikN5?VqGpa9Fi?l^I zyEo*^4_a8KET1&zAZsa`bI5s;yO3u;=rG(T{?)V^Vg0+jyUX78&byv5=f!bS@Bz;w zqgik03tx&R?`|AI{jyD0_|xBo10|KG`X;PfS>~rdK1p{gKc}5-9a}pp>85V4Ggi}a zadkWOs@1`rZ@qO8GS_L1z8n>by<%9BI&=L)eAmB)waT_nHEr{-Bw`+9<{{Q7n6!4f zRe``27*)nq6IE#=dDK|FvSMH;aHWEsq<_Nq%f*HC&IZmy-uCg}gqrtP^9Z&}M(1k) z%I)pA@ut4;8%GV*w4c46_SzjIJbET_ZM*!$mGBA99}Hwys_T0B?vgEZzeogX-(yye z_lOSjXFVt!u4gbO+}%}QnvM5Pu-K9*0051DB@OuEqjf5hZIV5HPE_y?PtWrtch5<= z0aAYS>@T!AKi$@umE^cc9xT<|@(p>}-YOOAt+QbqUH&K!@IQ?Hr|SNHQieOb%~#`7 zbn0atZZ(HoM6GK^axcw8lEkCrvBuyM5z!ha>F^=YsXG(!N9~U7RGZ~j-KyPH9lt)h z=1AWhc(j}WlMYWE!G^vq$S~ZCkmKHC-_Z;fu_y#(n2}W6H2_-mBVdMl!Ss0xw!!$l zrQIm~FfLO^<oS3gTL~PKeDP7OFm4iz1hybg_DRCO>N@*qQGK(?Sfp}%X&|qDk2T~w zmwASuyHZb2C&8ysj_IDBBR*1r=k!uFV{n(@@M(1>3xzTp#a!x!t~tw|J;Nx65ahNk zy^KnM-}e2*O$66z#NedTV5~-xFW={+WGTJMSypHJD8-DV<;W^nBJpa0z3R)`ZF0aQ z1}#;Z!ORGIX5m4YG85?MwAb5PSKZv#fDr23OGR^DpPSPf&c!!2&3(QzbceAWm9TR; z_iSdd2JIEJ!cZ+AiOGXm%p}fdSTQHWYdwAqc%&Qmx6bY<#4f4uEWc8(3dwEnU{Ol~ z6LrX5VJTZs<rQ4CV^;p2g~=L(!C+PjqOb4tAASM7aX-pm64W^H89JPiZC}ss30h&h z`$q-&x-d9ulPB3I)XUyn*+_#Dgc`bA+{rQZ{SKabh|#w(@p?&L0&>+pwy2?24bi$j zIne~dMuqf_P=UoQe@s%-o0)fi?|uKf{zKiYH;3OoPR|jS_X<iqLcWc)B&mP79MNnr zF<yfGCfiVJEHNuxIi29Q?>j5YbpZy4UGao2)CiFoK_9i*m7nPwT_)9)kUBG!_f_%u zL<)mtywFwbM||Y$Jr^o%_8QKQQxf<FHw!8S^TyK*m=;<_S2=RT){4!t22Cq{Z6he= zYKHw|{#u}f#ldC1(4MQ?OLciYe|QG;V(kTFDC+S)qBGRLN6LL9P9N^Xn_H9l#IGaj z<S-ghc<)3`;fgr?JJkIkVXkQkI3+Y-a1D6h*xZvovU-2`zgtEBD?jAW+bC}`AOpW0 zwW-?G55%4kRe;4lwDD1ZH7FN&VT@3Qpmp%2Qs8gq6&Ka@7?Y%-3nrGngXJf~hiN=x zk5TA8YlG71iY;H}8x35J%==%I0XN$qlEQ73mIimBS5+6&CLf+|G=!fO30qF_3PxTv zc`xn_TmyK8GyZFKj^BO}{yVaE=_&tW<t|0u+R9Xi)uz`2FFM0CW<5LODko1<Cekx{ z@jy2Vlj(fj5VI;$+Pa30gDYQc-g+_&O>V!b2HslP8=z1>HX_pWWih&Q`U-wD9?>Bt zK{UJ-tuxmFqUN&WA+x8}IXvuJ6ea=+eUDjWT|_MvB_sP(U1?}6>6j&T*n5H+43U93 zkv%ax{wJ=wO?RO)sdIP@g;=**FR!L*Ni}$_zr?AJqCuwT%qT~&l#c&nY?twJOH1{z z%(3P9gIQbXr=CWu(SRx6Zr_NIV@B@u5W5WaBEc^Dq;B8XKH82UKleAtTjN}{DkH#$ zo9=0K#I-aOU9Ws{yB5AY{8n#VFb>BV?ojG3_tf^hSmXs;eem9l*?fCQBf8WN+hFPF z7#LY$W@hHOc+eHCUwO{l==wCj8oiWt=*{<1hbP2U?Cs$r?pzuONhB=;Kd36nUE*lm zOuubk7y)iE)7OQD4R)sjH&0!8UQ67ZfQo#fu%+J_vlRrR&6(^O9Cj;2B%Steq6cP( zcOoMRBq2FxLE9x9)HabZ-NV$vWQ1ZW#VB{d2Sw<dxJvf!nEB5<`}rIaArap)X+w;e z64Z(!i$3q=0Gr_yjyfuGY({a7$vnbmNvzXv#;|0QWOgzUC@dI5w7rHfecZ`eTwF+B z!*ZiH`@6tb{oxX+9ldPhvz8z-WhMdX><ZwPPkrd6A7)v_MlH#V@Re|~xSyW{QyZH> znl34gteRwrqoceFO52|UgGmTlkt&vNsZwk(K!XE+OUWs+FJJ4}BF$`1;7{CJDsUwp z-569Acc_z#FPh>R`=b)$$|9_Rs8?k%KN9_z+=+;<{82^IzHlhO1(SsqC_^_DP(x0_ z@ic?5>}M#L&(xNJMWJh`1d}~Zc)NHHsE6T%k(=XMK?1B+^1zOn<f4$=uHvlxyPbRK z{ePIlDZ#Fx@dnLBW_mhXOYT%HHAGG>GL<Q+@~A*C+pIgJQyB%;*aI$STJUNK2rw0P zx0E~`#_xXSSj9#^MG;^?e3kKV#<!X^AHLnVTy0QF%EXua_2S9vm8Hq%+;P-r*3nt$ zWh2N6hlqFC0@oCrfjt*0SEU2SuTE!mFP^OY<j?h6s0|C8L-ek3L{El}_vY_IjlQ&G z0kJ}SF1t)%>h$HB{X1urF*^0K&d5LN0+3bA1ljG&WAmr`2Ts4mk`t0PxQSR0gc49o zoOC*JN8Xo<1v>JGI=(~=+bnwa#gBEBB%2bF*~Azo2E<M44o|$K%bnH8E&k3%6im@j zdnBOY_v~qi_goIPe5xo%zGowkY8~jF?W!(ZA}2g-1x9r2Vc-jJD1D!c3pG$d0j5~Z z8mw1_AJ}b`0fht=D6N95TML#)iRF2YQ4?LZjfD&xm-{}wCw`2i=fJ+=f+|iGanff+ z_FS1c;ZRc~Y`rSYvFv=q>xo#c`saqw77XwSM?<uWq=hELqsZGV&Uy^TqxHPoneFvx zWe93NpEZ_$b+I^S6ea1W#X43O$|@)4k3mwot|9tzpAUD5OHruAzL(5t`v#sEQY}GQ zH6u|&5jmPPB2*gUtFypIGPPP=rE_^bhmgl#vlRl6DrKUeS5Bnlhosy_wkV0nV=eMr z0<_Wv!5AJpU#~2+Oxq_*@6re>J#Pysiju61sv_j><A;1=wNFHem4t_=SCu9}mOcd< z*(MAi;`v5@y@P^p-CC)AGcB$c1tnccJer^9CtAYr_~|TH<LnW5Wgmxw;u5ZMs(9`P zEQ3)!_Z~Bksq(jG#c|QDyJT_Rp_t(;z@Y87_&C6FnJT&|AZs@+O#jyp<HNSh%u<b9 zMU&3S#zOKDrV{+?8fp$~eRW!|wy1bbteKRdw&oga81WhM(gc?|v&80uL0zHvi3W`b zQ3E+oAysmFJ{6T<8s}hOQf9uLv%SV=-b#fkYE<=4jV+7tJL;~6XQ|AQQ2k*8{Z#J6 z3ROp(O)#TQDn&;}oX_&ec%z#6#Z}rf;pamBk8xFH?Vp-#Y5MT3mx1+$T#t^jaHG?k zW)t{~B(GvMz2bhaEoX1?a{Br^g0q{an<@{A2z$>=RMe5|&8B~vidyW{0IHFY!Ci2% z>H;>Vp*!*i93~vOhN+gZ78vp?I&@2_0T^zI;JpTLJGxl)`MtD-3@}vzN2$&1WsU?t z2NKgLO)7g#xn@yO7=)V)t27jB6}1j+D2wQf+4@vi6fb%eqcR1Sfw?PuamPOec5mf$ z30159-1Mpx(cK?0(+@I9r@tq-z7f=&l_~q<$VzVz*2y_Dvh`tEVi-zwzI4{~Zh=?E zZg9{cn5|u<4XL9A>Q#y;%?eg#R-@(i^*ij-_GIY&!=f-U#H2dePN!>AQ)BN@*U8Av zA??gz72QGcOQ$+_%|TP)*2VeL2ovha4TX4C+(fEKYMg{^h=xXY_-!AGnGy_MwPqtW zOLCIz_rovRgDD0yI#}{rz_jw{v~i?d##g3qRb^afflvkPdp%xlS*N@~+VfEZEu%0t zugGQt;9dD1%N|*IjJ38t3#;{P`xoEpu^|~w8*9V*T3?mPpzcCth(9@vQuuMGAM-n_ zI(y$-LJ#MQ4?=!I%ygCBI2AY6hShYl1<xVIwz!)0^<pV^$eR#kg>~)r^u~+{!VInX z^bvl^F{QT1MC=pV4%%EV%!YGgT<8<`ke&RGpHi415RIL;$&jDRgbMP7B|>l&&)6!Q z;PH#>Hkp=epq&UMSthM`jxtY-FT#~LLFBz>uEkueYVl29Xn`2pPZLM)WZ-%cRq>k3 z#T;lTX;#py1ytt?W#Eg<We1!H844tjy5KFJCwMYSsv{N&WJ-9@VQYnQAUb7&B`_yH zWTPnYz=KWpr(6R(`fLSg>A1dPRa~E2Eo^+|pHz4tt>lC-G>EI|LOE6K<@Li3X?HK! zn%<|im)UL}2B;T<Dw@rpT}Jy}9mQV?YHi+K1fAAJ2neZ?S*NM1_F2Vjpwr|XQRD4{ z_Y2L?qAovS5>7P3aSJrt!&>ugaaqJkL-blbpF?lXqAS?iwql5>x62)wCY?TawPNkM zB9he+Bwac@S>fzn#2fgzyR)u{5$um<BP_G*$9N>I?MHaFf=>ZxmtjRT*Raql!A$qm zoiCo>TGoQ!;9hH*W+)Lbxs0VUq419?ARIULGL&h>GMEHP$r&=5L9ks-l-LrHOW9U- zYL70A2$<*Vh}RHG9Hde4B7E@%R{YRh6P2T>;7~lsv@+cUnra*N0a;4WZP}-Jda-25 z6zN&Jq0cu~PQ|R!+^F5gdi&(NJ4)a<eulPP2{m~?^lMkQ-V=?3jY$!wT9-EBRt#Mt zhzhbx6s*0w&tW439G%o~rJp``e2M>r3{~vj@kwx#&-?@yT+9^{=rmASDa|XZ0CiB9 z1g}1BxnSF#FLxyKiPqrchpfN(QS_{(q@;bxv=?EFkQ^d-0oF>%clZuRQvbl79#6rj z9W5^w>Z(3iCGdWKWuR&_{M==d0|A<^28q%r&4z7mGuEmS7t_{sp;4>q(V_UdSlb;a z+F)6IKr0Scbg<DC#Gky)oG&^CR<gIu!%a8Y9D)6;WEHu{8+0>Ydqn&;*@#B<Jsrav zCI)S0ljfuuAM0KMPqHGy6WZb3Z^kl#*(UPLWGXY;=HDD!*Di%F%BKy#2kyhW-sV@K zTi%{{CWPWw1=ZO0`Wg$>Iq+;5bTA*)9To7OKjz?7oJKiuit9c_;5vp;LdAGsY9w{c z1}G7O6Dj1ia-$-<$hbFhhpb>rz^p9q3HH2?G&(K;DqtyhG~J7!P>4ORm=3~wL2n<u z?sv!F$Tsn1^3dQB39jXbed3AM2Ga_BKLMBpj<QqM>4Hm|axkbThTOAf8HJ0t<hGYI zRHY2{D>_1Rdc`LQem8?z1zWusQkG-wkB9O~<I>|zB<~C7YwDs5$&{7DT|g2Y9bN(K z0}f%1T9!_EFC;yZGI>f$t^8dD)&-p{IvhC!fF$PR5yGjK3Td!n4ulm%Q<Vj*c9l>P z((3D@Pi!D;5Ya^quP`Y39+wq@vJ()HxVh!fb9}4w@5=+gt+4*}-Fop-RjXOk3rV=z ztBWq1bK(mHv%v{$-Zda+U>0>8e15Bnv{<8k$I&&Cp}erfUB!-jP$w`vgzw?NNYu0< zB<zx49iRDP`rjO(O4Wc-f;@wJ%dNMJjaA(#!}aAutoMYN<Ti&T=lu#*^q2fI!DJd? z`892GH;XxjaOr`j!0_)XskXKLhCv7QFoo#qv7Hq2oAZz>_Xm`fN$d?nIlzuq*5$;2 zYrt>nZpR@6v?D2{jNcB1q>4Hnc6AqP?SGDNoNSR!FMZ&^<Bbijw_|4EQHbS<FF$#7 zbBXHTafCvFsc;pS1bZ_Y())`Ju~<5Y&8lJOL$wVM&u})7#Z*gxiI0>T<K3F|hJO@v zI++`ym=VkIO25*5kCW*okV}vw?u-4B)<>*hlG5?bDx#W>kH~X#!X(89ufV!kgJ~~j zE^LU?ZS<Q%X8w?-rh?T6Y4(v*5~ZFC5h`Ejb|<q9OA6SmRvy)k1kDF|4drj;H3{nF zj83>rS!7CS(gxHS5A2E^Aa=tUY<JzpSQbs%YNY9`x1!Co==WBL`-8eG#uatw6uy7V zio<H6=W7%`fEoCKP+xI3n@;C;GkL82vtlFg;3F0TJoE(ad?iy_FwhB`&=af9;rJGr zF#J)EI5Rv4<Cj$Rh}GI!dd47*zsPdn%NBahUEA95#*(B6mSdKo+~>(jmS&DS^?B$< z)<2U=+bq~#Q|oMGf$0Vn(;1V+$(Zvw`L=Y(RXt1ey&wPSYS~`XtJ;7i6nbxFMtKO$ zt@rB4KeAc^#}HRjQ1v<u!d*M))hu0@7!xch&jm-7#vMuBI%?bBq6EcTJRs_2cVZcS zIk81uTyCX2Uw`!gH5oCb_x^;-f*8-+SIFpvT@}fjb!$uH<Wf{E(P!=@bx4H?>#))k z=9`vLO1+~(D()wlqD^-5=#~irA<#2Y9-{xd*O3M0`DB=ifMq;)cwDr(+hDBJXFl_@ zcY{kw3At48VqZejJgOPG)Vf-(c>}|8>QlQpcoMvoB<1EvwkH3C1Zokvpx^KRtk_XV zrnm4x0uR=arjtV>dzpG`0;L^00rg~$-e;sA5#8UFkaqu}PTMux4bNzaIy5lX+~VL# zvb9@+RK#=&5wyfc5%Xvgq2>_6D=o5o=~7<C(na1r5tKZsuJP*b-*U?aI*}wQ)=csa zW0T(lq5^@cwe=8Z-gLIEK*!W?hhBL}{t?DE=W=-w(b`kS+{wl7#d?ESdNtBo(1wPg zY7A>A{;Ralf8ce;=5F*k?{!fOG$zSbSXAd@d3r4wlJjh*+Wm}iq+h%{sR;8e%lA@D znUKu<l^+jPQy$@=iN~n<sckS`M>K{^v1*@}9nO-~XI+WYR>Y<mCx*wbAXzB>i=Za{ z3XCsDvikcTW1m1J#4&T%OR`GmPGh0UG@TkXN<Kcm_ke<d4f^z@BjGBlQP=1x^-NQ> zL2g=M2Jc5r-_D3KwG_|TL*5h!1%O>1bwdm2G+G=A^CG%NjUYAs0)Xz#F+*Kj`!)ZY zi#Fodfb2654bW50lufqLx77M8T)b(P1SO0#<UUp=W&|DP;x#%BtOgf>9V#6jH>N`i zDdO4RQkj7*PBwc6G=VRlWU4xZ*)PA2eLYt$lrWt2=`$xIrvV6##TuF&^u)nnD{Zg& z^m8mjtmC$q^d<Gwkvd|TvaSWzLcC(brkZRtnkXyN6)^(PNRPb^*UsvoT-p1dk8O2G zsmpH;KS9hCjJ5Z8U~ukm45t9|)GmoiM0j+j=zU}4Vyu-Vaw!Q~=3Fo_xNedcYla^a z0Qn*F)|%QiaWnu3d^#g(E`ukB3e}xA420-BA|T{<7_cKtHgY_)q*E=ZN)H2j<@XVz z*VHZDH8m^F@|`=XnV(Vgh!{N=ufLO;ugO~Yw0(2ABkZ7iRX=3%)gX?o*H>1?(11oa zKr`f28;Vl@T8}yVoP*F0H+*lKm)Ih1yr-O0k94A|AtY(S%aK8=V(4dSxmvu=nTMuv zKzsvouI}BgFK;#B+;b)p8uZ2iZwP`7%}#bL<zo`Q$MZa>a47bvPZC#hci!z$XZU@7 zd27YHowL=8EIdz7vy5#P>uAwK${SndTu3YUywXuwAR=ITG{c!w@->CM@9RMoKWxFy zxpq0t<mOCRfl+r&Plc5K(PP6--b=_&Oq32fd%aas(KL8!<G#rKv+>YZoJ*5s!<{gH zS=)GS^vcb}PGksL+8^Cqn9-m1K5oQLrOv~QiO%tfSXaqF)|Um0m4%IL>budme3qTC zDG_(WQ80)%SI<F6kvBBne1EgTMws2`f!(@Id6pDZm{a*>iP&W<G6h@{th&HD<(unn zE1su;VgGiCv};7qALVCsBiP8Zu!bZHX5-WC5vQM_dwI#uu;OTo@uQ0fm+TGtTX$Fk z1J(NYPbSD?jXiY;C(1&x&}#s#15NE{`Une5yf@KcraZ~Y^}N=X4?-L-*HGP1RQh2L zg8?M6br&5RnL^<8<anBffzOU09}`6MxO}F>Z@U%$*11-p@<Wfyd}%^U?>W=rc#-Ic z0JXZb^XSsSNaL2yvq@$0QPg1U&<rh0$5-!SurkV4gBXc!Q#=6CS&4>QP$A51`JcL! zMAbfq=7&NFYI;z^Z}a7XI$~?nL(^tiU;g&LkBc{>eFv{?MI=K>VY$1Y{q&%YZ@7&V z9{*6(v=YSb5^rsb?_x?RBSP2TIdas}+y2pBzyc{88$3UxG#x%a^a$O%taRxS)r0nt zn)<cfiJwzsZEAUDfU&dwcEvWs?bmi(jyRJj#I`x_BxuDOrOZg0IO@O~&*`TK^y8f^ zt^tTh*fk*d^vPAq$&;5$;?kQ|sW8k@lYz}BF%z5XYk8zen-}*qye@$U$kD=~!vfI? z6dzQQlwr2tWsvIrgHQrd8vPP_T(-kpxcxlE+pw3|){e+wum?;+_ErfF;iz{Aq~;mf zW4|DoxX9jdeCA(c488^^8Tl`z($9DCt5^tU#79`^Z(DAQFQHhzV#7lDXPH1CAPy^7 zXu$-U{(>LUI$ITBeSev3;s^d%P?bug<_Ka*#fg-dR$(SRrs+sjf5X>Lwty|CCWy~x zVSYHSau(*osW}LC@gk_O!Y}!p-djt}3=g-^y<*7yi_tMy^-~J{T0a4G5Hx<B>@jCf z#r+H+*8I+(3#FMmZ#u?TnGxb`8xfsq?BUIED3jaM95mX6e=$`4#j;8M>ejz&1O+J9 z|1wlQ_+{B-)B%u`{IZBj|HZPY^V{A3VKg47{r^JM(K{yRcsE$MvaXnXSf8wSh#KR( zjYxhb4+}m9(njg!e9EZF)F6o%9!QFVrmZfBq%JNb|EmrC|BV9tUsf_t><?o^v&P<2 zJ;v}%PeG<3pM_;L?8;ky->Q?pSrxT)?sWt>AJ)ZVsFR>z8clmib>%gyoc@t*k<b*w zMdVsetp(hG^{&@O(vaHMawMKr@bHjAW!@r9M{gyDBqZXC2))Tye{8qZ!hPFofW~-u z`U9zHd;g7#?yGDprC|_3iUUL>Z&O?08i3v!jV*v#*-=v+TfMNsge)&>e;Wtfj?eyE zfBS%BGN<6G08YLQgV0P-?Z{yWp&VYJ+%IAwkuN4g1}iyOZ3QvZ)YQl*eZao2)RQlw zsy7D0TmC`4K(QnTb-J1`)Hi#uB@?VWC|y8Lu_f|3^Oh+R)#Q2bu2uV3WIK~{OQN(P zb?nnguJGlPVE1~**3MJcLqEpevztqg(pCR^um4Ym(0h+Gkbbv9kg6rH1z+-&#ip&q zGMYkCgU33M+)?OJ?-Z><n_)*zIfb}v3?{v|X+ePE0!rHY#*V!PM;<X^aZpx!E`%^* zU68j(wKF`uxk>$TpT|yP%Y;({bApKqklJzbJ{W7DD_t;N^RG{(JC$Vq36=CKnJXVZ zcbvMKV_PkoeD_QEZ(0kK&#U@*`_pCRwOm6ND|fZk94nB7md&Ne+&w0hlXHd@tI}x^ zbJJ)@TqB#n$z#+;roj7!C&HaYy$=nyKqQ8tQZhm$L<;^|ENuRtAN_^)FE0NS`ew(= z=!#lCGe+nJ#nX~@vl!_oO)m?!8<Q6aCP9v(i}^oH9n(bb(U$X#th;2|5rzoRLyASX z#L?YrGQBJtkEy;G0Od?WYGVQ&{Ajb;4w=aRA_rALN;U50{@jNPCT9PKt!q5>-jE-2 z+o<iNwW4dl*EzEl^^N@iJANI(lPQ{kco?zM+1S3b_e0l$BfgEYi3Eq5L6Nh|&FF5$ zi<-Yy=wDd;6A)k5AARh~HDu`jQ4TYk^7$;SqP1?`MRTHOQ|KJ+8=d99BVJxbRrFuG zVD?J@(gJS36%nFSoaUu#UVizvUAq%(PopACG1a?zif;rj{%QXKf+>tm+u&YL8sol$ z!8xU#mT}<1D6u*9MWhl^?C?pAX~7VMD8t&IJlQY0|4pP;rN~fQ+b8JPR#H2`pH~6a zrQm(`g;`Per86Bb*MUgZ^XPr&8?g*CV~mEZX{3zx%(raDYO@N?DZcxWSme^x#Gpsc zNC(DEPjN{3U&7q_uWghJn-@6qwii?DB6dBad`u}n<!|9hHCdE*<2;J6*MK{z_3=`L zyaazSLH}a$PoY-pW2zY|y_~XAc1cFzDRw_P!N`tAy65>0v)a*Po?D&P&6hQkH#5ah zk7%wTXmof>@QlOfbI0&@?8^S&MDtqJ`KWP4f&UJu{4ZV7Exz^)WkpiV#bFzQKke)8 zeW>SmSYR;)HC{1G>E|S{jR0Rh$xzd9;BRIed*_(C)r8l4#hLjzExS`8`K(6<N*K_5 zZqLXmGUu*u_#Q~_2W{CuRl0wW=@#F}8Y*jpFhqi0pro2o9KF9OLm)T!gzAelhl1(H zTJ*;qKiYiYA&C6e$6=$!RhsUDI&?9dRoDQnlv@t0?y-vs<1z?kN#9C0q<zq|1EgFL zdHstIzm7!jxlLF76Z;?5h&4%$-X_`knUbk;7eAv*(-2p`RH^T91(I~4+Q1Socb_vF z&g2wzy4<h~S42vPD=(c-q!g0Gx_$f_ARy#7|9|qA0l!4}M~LdC2dQn?95Oj@ZwmGJ ze6{1|v2+ssyTj>Oy<fY<cD>WNPkLIj-SedI5Tm79zXW5Q&)Etsd!3XNtkt5b{A2R= z1gxmb%uSWoxXZT8i=eGvOzt+(Cvf<vS^uO2jwo2)X`zS58YB@_jl)=~Nc=w9u{?{o z%286g2FQ@#yaU~Dt!^%j@O@(v`59sIVX8W-@$zbdccLV$|AOF%9(Gmw;@1hqUo8F= ziCqM3@QO%VBGuqy%sR5(_MJ8%qgjFhhM_E0a@JUNcu%;0PY@~I*uzuR$p4SM_l|37 z+xJCrSy2!HLFrOLFA{o}PC}E=yL18pq)T5*=@3dtfKUZOZ_)w*1*P}ii%6HM^o}>4 zbKYL=^Y(t9b<Vl>wR`4YBX!L2%gh*a{C?l!X{MMj=1g`tD#A9#`Ga6#)4`o5i_0*p z6M|v93#J4wzZ}eA5?}%{&!`v112jjX%ZMKLcO|eQ+|??Fi5*=XEUb~afJIwdYX!wc zTT7oXd+V0ww+*O``^NERl)~FKen~dOuM5QZ5i^*X=S#|({4mg(C)dmH=m^F7+WVgx znV__hX=u?~HnS*F9<e{#B6ahIijf)XUNJL67iV*+`91slZvHKG@5es3B!Jra)5W{@ zjvajgP}bzPc~U<0F&^ZRC;&<{M;3uIR1H<Y>?q<0r}t^{4_+SVRQK?3PZ_LRb%)ne zDeEPv$Mm~gXy#ACUtf)U`kc=f#wOD(O&vi^FT}n0h5wL=GWSyv{61~Bf8eK$)Fdh> zOE;@{o~{Xo>Y~WFSiS&MfT#|526IdI?&MEv7k(T=cSt|2_!{Fcu0v&T$}dI);B>X$ zG!m{RB^&v&_#o%98SaD_wnD0Q0UJa;D0Zh+D=~)M(9j&x?JrBAWhq_)Gl5oka=sN^ z{Df)G7>`J`Tg6H?t%O^~J`aalhif|(3nB^IwW`IQfIHd#B2((v*tNUmRj(&KR>UM> zJEFJmz>(x6eS=rA;Bzb~aecnY1^{y+_>F^mtkdt+t(d0gFKPU}c+GXwo~vi2_*axN zPgO1}4|IGY0Vst8QUnlPg`J08qs|X8TI}q7x`jw!D>hku^025UJnF@q>#|U-!7OVZ zNGN{K-JM|pL>(P|v0`EBXdGo=V106>?L+2OHf+$U*k{G9@eV#5QFWP)O;K9Lu%8lE zmwUJsN~w23D~&e&Hv)CjEbBt$sk6riNG$U5Al+{`9e26A+-zv|XXMxAsEzGKD1&zr z)h-~2=l5z7T@|$vi2`C{)tjC!CSYWh9J73MNbZgNG)PoJa-T`#EhY6jTbtV0_9*S@ z8TPjcs3q|bxbd+3%c%sL-=-zQOX`#q?2QWyvpAW7JkiIyjG`5Kp4Vvx4#o2s61@|T zoSubHO^-FPN(t&mym2MP0_w}OlK{k9wvE{;5ytVfm%Z)+-7g&aP*zlP7k(wq$c^P? z9r##J8kQbeYve4Z6pbkabSos`aR#>LmG%N8inb|XVbDvV+|RmkvcY4D?pOr1o2tEc zRnEt85G2Y?i0Vn~R|hT1^W;wOBA?olYIgGbS~{1<bw!!BJ93A!UJEUvJ<)HV9U{V~ z(aT$YB{+2&nBR#dFhXy-A^>HunCuK0<*0YE(;_|h6%(?(Sfl4jW?f;dB`eR`!60;$ z>(v#&z@3Vt)IK2^HQ=hNar@%%k~hEJb}4NgR|sFqJ^vzw&_N7`LK28`#s-757h-F@ z30!;59~sTKEo<q^Q#eEgH1MiuRoM>CVRGW8;zG6YfWg}PFxzZ=hM{^}OhYgF=IlP5 z3#YNEWtQpB%XDRRzH0wac%~x&JJSm0=eA<1s3>V(TN;0`Ze?40%H7sP?DP(6m{!va zWyS1eN(?X_Y#*xLvcWxGmdmt?acG!4%BVv1ggCh!G@Q+tfQ@yB#KR36fOJLEPPtSi zakdk>SIz-(i9G?YqkYR?k1u)}hFT$qtR9pOE7N&-^FJ6KwYKXHLo8G;Y$*jXA&p6n zY~QWZc`^YViM3mqM(Sd+Vf61K!@HHma+1@9_R#L}`2jx&NT~vp(~LDRRyDp><eJ}S zBqS?~iR16?RBtj%Z{2~IxWud4T2J1Q8(sD!Wv~~5g*;NU_V1kg+D1&<+d@>Ig{gHb zr~A0P)T>q#Y5J<tFl~lU+0}j(mOd9kikE$|P9L^SkG>hPHI8l&?}V#{9!Q9<3)^R; z-dP@cI-u!^P`9pqV7<;DPKIHLS{2-93tElUsy=3INP=7We3o!>F`G6^GQTwxw%p-l z9-<)_LLH}!gV`!5*S)qn3Du_;qPf>rYUE5WmM#yze=ma7w`xYT)Tw80ADcd-xy{mO z+8NsT=0U15xvb^56_Bx3nN%yEvA{vu!bz74z&KCR!0gG+3~;LN0vt}>touK$9RK#j zjVArvZg_$ClU^U*>e-S#W4^3=f(ZrOmb=y{(m<wFIf{xCXJqDRxXvvunI1nJ3SY5r zW>Wj6@%&QLaB=P>jsv#pnR3}9-7ze4OmFb(O?I2kUlG4x(=oX0b;jS#=ANx-X<LOX zj_ul@{bM>~#SdMu=0)V3Vwqnz{x9xkZ>ust?O0sle_7Mx<4v~2X=GJJx(33k^w!7J z1*cGfQglEf4>PQoS$1sR?F4J6aT!vl7rnDhu`}ptu|Ne`TTjbba%c~a+=cZi)kgGZ zr3Pn%BS1_}w0RC4R^orWUKJ2@h^6mY?2Xq{m*#1HE7iZE+F7`43?Y^{@*cL%S;tjg zDKhYNzmO8Y-Y&>Hr2EC_O@zJH`i{I?wEt|7&?igs%4H4`##-u11)KdcXtkrETi1p- z^ko+h1N(_=$8N#2d7<`G_>1B5aFWsXSk4>`c8&A`$hj8#iVDa8yn?jOW$Epz$>eZ% zr&fJ&RB%UF7b9+Ol=J(7RCl3dprV&7uajl=+a&|ZfM_Jn3GLPei9SU-Bj8}Ljvtyd z+NQJ}5Dnct3qa^EJovum-Vmt+>SYF;QQMceJX8qGL?gaSs?3)=^c<4G?HWyA8y zcDrHlr}6G2)f679Fsnye_UoPY$4)^UiRTQ<e(_h<R+aQJpZJTS^LR5Y4R5^C6XX}V z&Jx*r=Ws{1)R)WxER0qYq5P0d#SZ5#RE3Rn+tho}MSpnuao0rpoHe`sNn3Th=Pf}n zp}l>5^$>*x>D?$|bAzEiu9xt{)92PTq?qGt8{g@Ly4dwyN|Qc(8=HIDQdzc-eYMt6 z;ceQbYnEW4&Q#`5k^%rOunb}Z=u}p<gBSH|OD|nO2yJV-7dpfJvbz0V^;!psuN6X% z)?}%}BaEFDY}0%2c+1YtH&xdbx5Rw4SyKvjbDx=2FpDQ9hvx9b<dK?-Lxfk)zl9wI zmi-{Oy3IGTI_bV<{c2UQ_yFxGZxp1RRFPJr1^ultdA6ImnQit3O5DK=AlT9c)=_bd zNr`Ym=;Ta2lM24x{VK&HJ6{_}6c}@^xhJ6-S~>zv)G9=-80<U9$50uH$7I6^R|Of{ z3d^)v5$eTlild7qFYMl|>iSw3=GAIi4t-gk+xVCa#llva<6Owe33H6J`D{s2zoiM0 z<JG{NK~E2`#<`P$Q0un77QNjP=BlX?-s~e!?H;?-RLtVS`{8t1_TDZoA(rUg&hXw2 zA9-2zs8OY?j!pC%b7I=)cSA5_JU)5xP2lH&2eIRijs!wI;gQ82>A__)Cfmw&(jBO? zAXK3`KK_b6SL;<$Sd`sq@|r=;ExGMTL*2wi@2npL!TV%)k1PFE8e~*m8c)1!*7x@= z2iUYzJCbjgD)}+>6}d*G_^RF+N%!5#O>>9SeqPzyO6{5BI32Y`q5<sS=mE<~WsY}s z`>dNvj_S{6xB74PMTs8N4r(-*?G@#avT_u}W;<$Kw8P<nv@`Lfl#UvygDs<_+<q#J zL|&#`EXxihOq*!~VJ8=wNgY_1zRRZhAn2((!9gB>!qBRYYo(-{x8on&sF9b`#$W(I z36*7UNH$nq$O(?i2H=6RozYmjg2eA<5$Q7@0%}t@z1{rEL)*1&-5xW&i_`Qpok#WC z`Ha41VT->75_s8@tn>RnoJ&2)_bxPw8B1DA_8bb5lGNXCJ2~#tIP0_uDmWJ=MxUm! zkcE$RD`T&iYyVdv6b3dZ9d+~SZmAYbRID@^M~?J0B#$ZpH0xSz_4Xs2I3W;6!MB~^ zqlkH@-o~6~022eeRG5{a%)*uY4}yH@-^8rid5#!SD`ycX`_KZR*Ya(fvkv?+&lVR{ z!dIfk$<(W-GM2G)!HV4u5O~NV4w%Wf3|3w7io8buG?D8YbI<HEJT0(3;VP~UFK8t$ zwZ$t0mmbeF6`V$=FEt&6dbdp1TpEpe&WA_jd95_{+i;#+kD4z?=mw!J8}}GsDNz?} z4(0pY`kxhbZb~Si0xBK&zNZ&8^;Vesko?jS6Q0dv{>!`Nw-dC2g12?AY$DG)fAX1T zShIf+5Kb3g^iUkf{o2P*O4CtSK~u9=(GLP(TfnmPl+dFSjWP38gYx&0cvjQ@ySiio zx|<}LX^{)K2lE&zwz6-A&n7zW=HVu_&<AsJyj>(L(S0B`LIo66ikA%O?By@<`dK3R zb>x2^T>^09F9Q$zHD2-fI!XC2!Djrsc>OGu{2J}0mNAphxLkho=KJ}IPR@0EalNxz zgxXPBg^ob3SPBlX5Y?qxFP=Z4|LleYabJ}reT3+x=H2@DTOQpgZWPl9IplO%x;D`` z53kvx9m(|ljMN2p60`qnAOG`yQ3fjC+5!Q~55zkUg`hl*(<z2EF42OO0Lpf#5pRTw z48u+Qd~l)C*#;v}-0hR?-sLoyypn3ZU!?HI1EhNGu8D<%z)zXl#D*NmcrI0;s#Xdz z=jZgvKlT4W?0>yh|8M%a|6P|Sc<C&dl4F83P8iiwH$qf?%a=%1J9f8FH-=|lgqcA= z`8R8XCP%zWzr9p1cD@7Fafjgu<!T3Crl@xkpsOD5gb)q3Sw(nmRzHbQvK_?$91STi zx;JzC@Zx*gHjCytl14B2BU}SgUL2#xp?12U@Cva)io=p87!8rW9F1X02i6GIiP*V< z-dIb)%<!_WS8t%V{#aUrLn*K8$H*J9mDO#hV8B2Dpvb&o;Y2hJRZ$9_jJ2G6Pax;~ zs-bJouSBoq{@@2qxM{47msVxyBc?y9kfZk4r*x68C1lcODz-LuS3pQlc4QC-*PyRz zVU2Io>$U-obti|%3BcyxzDxsNqv%fD>BG++4SJ5p+F9W$vf4=Tkkbx}724b9+*Mak zY%>q(!g1f-FWYOc%6pqOj2T@s^QYU|Y62tDH^b)x(?wRg(uWTnPjM5wWeSSItCqs^ zf!h27X{Emta7;h>m(|8o%$7$nZLwBVPy04@c$s34bIZz8Z{Cb+yRg=HO*R+0DmQA3 z=~8T5whm;*63{!E->4UHOj_1G#`@Ug@k@s`a`I2qkUVi!7tgnQn4j_4YtupAA!drv zIRC6T^-*u>B|G5c0Hm_$E|XE$pC>R$|D?x-nkcR&yM<8*gE|lZ@!YaGWHRzTiz~RV ztFIg6;Qcatj55c8i5V~4zPS1im&E_@ll%S9Pe;fpo6%ZbJs-e5FCT?-#}lop)XvhG zqk@qP&qOK*%jezwR;At22(2$IAt&kzUQ$vcvzn@|qIDYNzbS}^yMW?m+}Ko-*BhAR z5e!E2aW(aeiTnNBeU1Wi%BL`SK=BX&G)nitSJKYZnb(JBZ9JGd0z=RL>NO;~iO`*g zaP~q3qPk(tc^x^St3@i%P0LZENG_yJN-q78;P#`Z|2C$-nxn0VEZlLKQPQ3CGxw7y zm)+HHI%BxM?KKybu(!5xA)k7%e)Y!TKOCoj_5pmZGHG_nFfa)+R*Grw0d_q+V!@um zwT2WO`B@S!6E@{v9ACC(U$k#oR$Z+gm#g~?O<w^%hn?ew<`WiWZdR>rY@gG`Vz-;N z_X7QXO{o(Bq#51sne1(y9ti4+h-OG=QYfr$ial605kI94VqzJHt+=vvxNPylUqv`o z{8jWjj<-lal>W&+ETwlaq^yMzP>^uIti^c4?hq*FefHpgUb>!$HGA=q7_WKmgsweQ zt3t9;u`QysUt7&{$fyN`X|g{XdCb$~ibsAjHjrJKC2<PB{rZM~xqig0steW_%ss5} zwj!zxp`&;bg}$TLu}}{Qf-pY+Gs1r@LyK4S(S%pvixjeyKL|>LL>|2j6EC;CDkesI z^}v~f%0Jg#R0s9^2^{(J`+sTm*`-88K}$^>VTCi&$SM0bR4LOwiEicrAV|cWSkin` z!@VpezbBm$tak6tEPQr&3LY@LYiCpO$d;N~QBEQ}fh;z3gV#S$%RSiVT!H9zSF`jY zl@Fd$KcEX3J5-XQi|`g8rz!+az8;2i>PvhRO`Mh`QyEw_3dig5ooBQyO8o6)u6->0 zQ21fHi7*+>K$5sj$cik8sGXTfr)M!nJDUM;_g@j*j}bOE<`aDPiN+G7Sy~!pzZnVk z<%Ay7JKacFT@@mI_n~uGu_E6}h7R}cn*)po24(D3t#YWBs>lY{+7)G3lcE#bZ4vVy z2lnPSu4h~ibG2>bQJX=lxWYb0FXxj@kroUGr$mQGch*k67XdOz`fl)oWR2rxoyM1p zT5KITJi-%^;;)TB3V2FTWmG_PPf+hiufL7p-#7RTuZ-t<%hjP*q-1u!Zebg~1C*N~ zU8;5hB@;V_N7C^>2<rCQM=h(){GA85Mht6{eh`qPY9nQUDblS$q{$vwSdq+nwKwL& z!qvxL^_esZD$bK<<yWUv5Bsz8I_|X<FZKXW>Eh`<H|AkYI;=YGGDD-0?0*eBtjNI* zDs^DNi<qJ_S{1HeUXvR6{6x@2&+UEKy%DvmDnM16am-42i%$O1J56`Q9Slpo2K{zH zbX*O!8dk643;VNwKkmOhX7QI(?y?cfcm00u(A^WV%8fMi((TuX9&UK}p${f}e)lC@ zvQ<GN#|kJl;1mN&s!cAx+sicnd7MAFoTvC()y|0YB^Wxa5X!<z?ndMDTyOY+GXO%= zbJna^1Gvk$`SRM*O^a#k{&<|Lgy^uzJmH&^A$7sUQKHrkd*-ZFEiP1zYT}3rMA}X* zF_>~g0OZa-;OCSM&7+8O5OUkQYcz@D<uG{<Vex#M0BdIKlx6);9kegmfWc7#s7Ui$ ztQgmyTw5cSZm#ejkZK=EgtXVj8s;T0*A1~^HI>v}`z*<?4%f=ozmcV;w5ccR9jVAz zl2Qy_te*Ca-7w)4{jjZ(m1b=wI>qbfn%S8+5|22&Sbs5NlrY4+j4v+TIsBa<e)o<? z@Hpdqi}gF^dUIb1+qpMYN6KeXRY6Hrhi4|Uc*;i;pUCfB3N0S`Vxt$FRTM?-Jl|Pg zZYmdV77eyk$L<Y8bZ6UC3e$phd!gS25sj9+Ouz#bf?do8h0&&NmW?ki_ayX1bO{PP z*3P@J7smB`A8eDdUR3FrB2Wro7p$V4VK$C1(rdJmR@;iA?K})j;3;s_+^9SfNG#&v z+FXbCW=k>!w2S4dtG4DP`*46G?(>gmiB18)Qb?&_0?8oh{6|?Wo-XtwuaZBo!p041 zcc`KalGv)`wvKf2GvIViATN$eXZkK9LJ$C-Pd+$(K0Kti-mfY`Hs&PS_41T*6fd9- ztzl^4+_Ye_J3Oo#anFtCXh&KfbL1?;`V<fOx1L{HyCil2Yn7ml4h#itBFi7;iFU*$ z1QCizsO<#y4V}k+-}kr>tDRq+^)RH+-~ts=503K~#!fhR)-c&EnTqaC*Cu9$rI`6L zqRGnw7GSx|ZmTn?t)0Fe1U{D6pm$+Jbpf1mjtwGG2b>VuM=~~=%8QbjSAN9@n*qms z#zDj#x)EFwQF&A>syDDk=@Odg_;66DqfdDVQn)9Fn1QKld=4lQj#M>D?8b$|30)?B zzuvOTzXheXDNJ~JX*qn(YSOxl*UBEb@bMVH3zo`7>MTl7sj5|9bgdd0dwXW`qvM@? z-?mhkN=-yYZZXrBV=R9VP*x<tlGOm^;UHTzLG1Yj##BE%{bhaRoGn<Yw=MZ^|Fpkv z+}PA{Jx@(rQr>ddOi!SW5=2>8F5YVv^t7ra9bRmb_m#i%gFu9gJ=?QL>}H>^YtG@A z7jHY<F9lp);dFa}RorzZg3!r4ONuV!2SF<I;osIKDs_YY#-4*J;OIceg=W3MCH$M^ z=7FESP4v<nZ$2kZtlt0qY|%`>krbA?f^)IsYLmJPKd0?6T#9`srLBtC*8b>NnQola zQg*}b%itk5MtPJYD(-@vFo6*pj?zFDBj*uNX2FwsKXicVerl|#<5K_l<(5SF#<?0B zePWe@kx?*>U=^7{2>mb(q}zFhQAyR)KT_rfHi*M7HJoAR5hQ5%5yL5)a-CbW_T#>S zTq~+X2}3_kF_ws@+}YV`-r>>F5l$s=&dJW`TE6Q{{NAN6ras{mh5cHD7D~05b!tp~ z$Z1+zm4<5VmiaDY^u#mG<2EAJ%NV2PMe95PJR)e?NMtp_BtsrH^@gj!Zr@o+WyW%H ztSM}L;uqxKh&|iwdVv-ti^LUQ#oxLMOFk9AK}BvBO=Kd^W`V+DopYM}^*O+w+s_r2 zq~B}rDxv-xUU>B1fXRPR(fR)+)^yqSByP;V+gRAG&g-LDLfCTR5M$j{R_|)8G<g;0 zyw8Wi#z;^%SnWdn{s}_ui0gBx1MJdl<Q2NDOpHF#F;RF7@j^MHuvBpC9@T?H`v7%8 zM{o>(N%RaTo;|#$#dT%tpKX0T3tmjMw^sSa)F`-|I`=`v^OS6};$yw6LL-u6%yiXw z@OxgPf1To7d5Rp$H}Zze#uX|`D`J*GaVwQc$%vK+!MYK60h~(?VVeMokB>(`UiqB_ zIP|irrTHYR?`_vYj|NJm|520_F>3LF1}A{mb6rInD(pkp#z+dXHRsPI+J8l+oEJ)# z$%jkDLr#7>oBluGhb}hAhy-40|2}gx^$X?6CT2k3?*BZ*3BAjBAk6`AM%$xuuJ7h2 zTN$4W4L>Gii4jdyTFBBdZ=v?1VF3>mfSbFo1t<cl31k9AjsJ%vO5D!V9QlSfjB2Wr zr)&+G@Wh#U{vvVqQd<^8P-TEUj2?fJi!@LERiorDAuAt){pD6EaVt~%U+s&WT_wFT zI3xPT-57i8Jof~z6hN5_Ru{cv=f7fL{(ces4?p^A8`QsyK79A*36Nd*n&j?^WqveC z(xplxdEkRpx3!m>u!uv9g3d?_;$91!p&2DE@95m(%;(uo8A82ix)VO%%<p^8`7`4D z_}sd|ww_DoyU3(Z!rA*TzZN|I?BhSvA`C27MbSL>kWJn*h2jjCvF37=P`2j=ZHrx; zOc#p1!CY3~=Qv~v9~AsG{NbPHfZxLAw@>03iBF<}#+y>32IbTBD}r=GdmC)p<C`YF znFJcithA5*#f{9L-}_%|wb>n<%w_23Rk`q8F$m|g2igb*gkLc~U58ES1dZ5#1NpUF z{yrTsUa)j5BGw)|IW{4|Dntq8Y;J3P6l}lI;mn-d78rUEN_yqYqV??0lhG)syoZ*Q zU!ANv;w{T-xYt&~)GBaF9na*s!SJ$4H;>y*W(X6>-lj8a<+7=y8{78w>wI(DS5}Sc z*``u?U(-rv<(bW64St@W{p<fcH}e|>+CiyY-*kg#jN<AZ3DwA`U@ccEhYhFB4}uN# zE<>+nbyb+N<Fe+Vo$zE6<vFp<POU6vh4r0D_H4F3zvHX=aVu&L=KASGaQwJWO<gva z(sqW>voAb0!HQ>ZN|`A6$T(?L{EZa|&c>4}OthuXq;o^cLa%Np1x%K&^V-N*B-LC1 zs+Fr^6n-T1c*8x0PLrcAeN<xm!O+~Z$`60sl1imA5)rSRl+ASr1H5G6SVbzCdtd|> zGn`$LJ7511x0z1CJp~(EoT3NaD!T6FO{ufh;U)$1rq(VkY<681-#||LL=Z8K#Z#+w zMkqFU!#8v(we9=V{XyIBFK=+eIen_hz=8>e!f&RO0_4_<-DX_Krj*!x$|wqwJxo4( zUB6DQ%c`p0$4?HBq4T_7abxnc1Thc;f(_0X3+GmJLuHaXJEKloD@+x`9^LPM$6mL5 zwDsM$NcEP}S`(=j*)VadiX)~4b9%WKKCQ1B2$^c$y;gMYR-CCCJGGdsq=o41eCw|p zS+u&yr2U`^1kUh*un0EaL1yzpJjToE6^gB9PNlpGD+7yoNkXir-i+&R8`aMl%2_<O z6kVKAjeR)9{c0b(s7}0J0>53a+TsHby9cDr{)CxdUrpLDZRd}nlmRwy$9CPc8)cJF z)1RP(OlmQRQH!(ngPDXL@vi0d3%+5kZvV<3&8I537`srjMo)*NLF<+;k#Gg{<M^{k z>!%nv_B@#pM^lOwzfUasrpGOd=b*kIs;|ZYUea|14r3ZE!qKx<MgGfZPVd#(2-?zD zF#nlAladx)gAP8EwjzF_FqVo~Vu3B`2jT50ojpPcE>aUdIr{wA)xK&CQU6f?RHvpE zn${|qqjuSj4|L1*B8FS2CwY0oFq7WImJk89O5k)F6;<qY5Q&3I^`L?vOV*-^*?JB) z6HWh6?yytta?IA75^)hbDSqwRw*w+dP!orUu=T=oY0QJ8(|C@qjW5)fBlDHsrS;pA zB34JrICA<c0?|TSG{#sI&q}uHZjTGOv{D!NyHvvIeRZW8jm{ciIc3MoR8?BH8Ctl1 z--v2tFu4n^k``hTmjtQ=!K~G(Ph&q~c?NEk(YxEO@2Uk3CtdH&(p#*kI3>0wk#sG} ztsNMUX0eLdVBzuaWCo8mho>^J2@5dhwR+?{{|*&3Z%%)kJW3?Y%j~hYCPmkoH_(gL zB2(kel(qt{mrQ-1JpDmneXGAp=e~yhX9}M`tn2m@e18z!&9r=pq8!LJ=_fbMP%V4g zB_li_JcM?^o>P(JsTbAl0Qi_AT*=xv+t+CtU(G=8a`2DmKUc9@ozoyg3#O<cj7w># zzAf;KNL}yYf8RsW?c!Q;zuxTWXeX9(EcOHM2;)ZkI<k<jfvzUkwsKV)Y}~d_b*PC9 zKdR5o6`mS*3^yO|4{Zx@Z|^(j<FLj(N9+Sr<gGzKEo68fDFP1Ytd;cs{&Z=1diU99 zrnWZf5(BReS`C$+wQD#!gm}75b?&PA>Og_Rt4;)XW@q-a5yJen^3ti#uzXzf>B|}M zm_>aRx5iy%!gkQ;M4p^ZwdZ&ZRiPiIUh+Lg0k3jH>+$^*C8AnLq3ER3xGOrU_7b@i zoQESIIuvvp^C$*(gh^Sfm=(H%4GxNY+dY%OnuC<6J9IS%g^LY=KsZ>J>Oh03Yv z2*Us&S?!u}NN4gwh`&mz{^+gP+hfS(@$b70{sJs-lce8oaam8-Q1BSNd+k`X#M0Bx z^8vo>95y(7<<j!S&wtgy^TO0lBSqwoDNqro-qu{L(`4|BQZ1Zz1JJ3Oj`uf+MocI5 z9q_!@%;X}h36gAa3swo&a-B}SLl)<#ujMSQg(JS%Q-P_!H}B58%M*U#wP?Ob<xrzX zX$7Lpa8fw4%BpiVIkxPK>=Mt1T)4^e0uHH4hMh{)NnbI@Z2f++G`*l2H$DE&AVc}L z#M7Mt#kd{^e*I}&cMZab^|SW&KA@(M(<c#8$+RLcTe~S(rLVC=8~|9_D=o)#*ZOM5 zPeFMmK3RH%8u`k`XR(74Ku!{*rM4(4QiLAnyXyzuQ7>l8$Mg#CT}3kpIk}U)_*tb_ zLb4R)66k8JIFPk8$i5m5kk4m#*?7Q>^82hA_Qd1q>N;l;gHi7x+ggcA+p&c>m<r;2 z2m^GG-RrbZSM_fI+zMf@J$-OpSG^3GIPzF6T9u`^v?}HxMZ&O8NzD->I8<NOkCe`j z3lJ=XvdvhJA_O#+<xiSxKBo#N#gdDfX>02zDX7)cI0`e1P`7xgFG1PmHv@7LtaD-e z>WB!oZU^#9j)jaS^~A_zU#c9`W@)ikJ-wY41?f&6b&9riZL-?K1D$N(1_v;0^)%Ln zF3Q_Dcj|^XocZ^y?tS-b!dEO%SO2oTajA!AGHiXvF)UZk=E&%)Mgq<!e=gF$wD6Mr ze<|^SS99Irug9lwEzF+#%Q<16Ux-6#;{C-fAXD!P8OnC25CdW7u75)AuSJeuj8CY0 zm`jg3u<tTdwz>Kl*Ey-mAzNbG!<YJUTXR8LZ%1D<GeI<+j(}&s>nxha8Uaf-7k6n- z8u?_kC&_~FK=35kH$$7N+Y;WKL3$=MT3;>(v`-KtHg?lz{Z@HZTPdxNZ53`>XwO)T zb2c(^VBTJFJIIX}4gkQ?mXoPdfQo%zmxeU$)2>{z6od1xC{$R`eaqB?ZGr8G6GjUM z(P_AVo{)(aosXKoCB<{HvK?2=HCB`_)aqN-TtCOf@^HC2cff(7y6!V@1FlUbEk$=d zH?}d%TQq+^0sKL*;&||%f9j^rjpASW_I8g95)&*QQDq3YrhAQZXYJvY8&p3pQTmK- zb}_SGo%3M0WB%EHcl0yh{~fyj6&J&Z<NRZzpNY5#%ajJ`pNY6a=k^+Bs-KCt8D_Rq zqMwO41hc9G)9$KZQh3SYsTqH&mSWfU*~rSH3^#Sx{PAvu<Zq-@@hP;jDY_N$@mqnn zl;rmwT}@7JYnJ2nVr#hg+P<ZkNLYmzNxCV5jX=C2VxpQFs8NAaFQA}P#SVDB8Lt-` z>AL0^*l*PW56L5sRW;<*9jot4F^pg`Qhl`pun}=eL<kBtDl$Z-$|S!z%9Lqs=)mJ% zJK7fIcd*YdYZaHK+<n$z3kOD*o4iwFGRIT~)3HS5(u>+!P8{F1_5*~X*fiYzmgQ7M zbq<--!ogJ-$lT}2TDfVTH6QYBsNq{25(L!Gt8*WvE!M8iW;IMf>9<FI-YWucEaIrS z(nF_BSVTk9JjZg-q=+0)T`4kW@@NwLAuO=1-g!3P!C}2$>Z`$7jIi#;mSM4P!6uC+ zub(%({*>c)0;as*f6lGH{hdDbViAFiU`>aKhu(~$=Wj*D22asdwu|ExOG>eE3a%6B zCdy>NjD#=yz>w(h@F;fyCdM<Pze3wljL9h&D;QJP)y8(inN@OBvWwV@92V10e<$Ed z{POcW{)<P(#v_t5kzz43sT2pZYleua#nMja;zf}5?j#$I*w%G4fQ`g!*xFGJ&T5=* zwfpd4E<1>k5MMv5Af;?okQuyox)i&4A8%Srm408d$lza0i+k(8=g+nOi)ry88@i?h zZ(5AO+oF;IWwK(`Uus+YHWT($uSPqkFGPf+XIUwMZnSQskB_+mLK%YTMWRUYDW@&G zHm(T%4%6LlBJac3?I5ym@|Uw;zjf_0yq?-W^tz1cnDLrFI+c+M9W_{S5VA3-wS-Qy zUm0_J_lSJzR<@$8(>se!e_xyak$|G-_kW9#1;_5aWTUktyMe6iLR{<a^s6E^5yQ?f z;KD@b$SEnSe?aWMfc_4iN!gLxZH{M>-R$zzLVw)7ooYR98_eTHMaZL&nMECOhgqf& zLEbbN^6bAD{69Z#A@t}0uFLI`x4u{&43Ahr@N%m=yQNr_MUGRe1J0GllRr6~!<A2o zCzCb~a9TCD6{unX<Ef|&Rht7wTZHG$Xftj^HeahrryN#>csSuK{#Obrk*<dEj8G2e zr$AEDreMnh%DE4K<8Mb@UVR>VL0??n?Xw;Fe5!d|l;ZCMx9_gJQ+w%nTKD0G*qGm= zLjzb3)&xp(8F<*Sl5=J9Yhm`!)Bn%3{u<mJ&jQqhPvI5jh4=7;s(lByuvKm4$=F4K z`-y!h<xAn1gQWK|lfNP<2*)U8+-bu7XE*|JqdJoduWI}aZOxf0nfpH&ZzpX8cgNVB ziN`DAxuCCCHSt_f?#rm+!m{RF$2%27S4tR_bl<R9zA<PNZR`P*De@nVjO8>@y_oD! zPKoXh>q#d%C*2!<=$OxgUGI!HJdabCRpII}iDV!<cde{}w#LsibT5=^9)%IH>DBz! z0vMGvW~d8(?;4p>yWA>2vI)pNPBRJLG$MIhnmB|Q%+?1=s#@~k*;!>f(-tSC?@guO ze`xI7=pOSp;EJxY6ysnwiK(tNaLnz^7IZH2jK3(*>!>}wXOjDQgPuQTu}-Q6D--|x zgX^wR443Vv+#{pY!GmB?giArCtCSF5DiWbw8LBF}aQ00wh`OiBNp!eWrITZWHYdpx zDNy}LYaCDul;{p))S3e_3t`m?*#^2*r*7opZTs3)qir559zBY%KzWV{4h&8~<dMtl zHCvMVyeSJFOVp;z!qE{mj0k<<i>?_f;)kY29e^c4L*wTqk*xC0kp>0YPKOW9GL3KK zCP}x(*!CVX3rzO31YOIFZ`BZ@$7>WxWTMI$TJN?|V!NUk-p+i_5T3QDrfJ>p(QC)x zZG&hiyCM2}M2C0|(X4&l)x+II_V!)>!iI5fEphPbKr|%%)wGF~1y6^OZ|**MKjKsx zzVDo|r-ZPMwI8?1ho&0o89qEmYnh7Beq|(E72mh6T3%&lsZ%IL_|cy`n>`V%%PSB- zSeGqgMV%F6G(;ocz1g)^WSMLQBT$k9vd8KyVAmV=9;q*JJsu>97DXjiNoAH}k3;1V z1|6a3BZfN)R_fL^DP6T0o9~B;lV{v*r`c$w<)ziJ^C*G)Rq;hg!)Aua=UnXEoEfmu zvdZ*;uf?($oR2z-8lSrW^Xy0kL(Ckne1rqQ_N}4K<U@Zi5C6n^fK!6ker9AH8|~-i zxGupKd@0wzb6TtBM5U{F{so;gP0=aX!;!Fe)q;xGNqjLya`Vx8g4w5<1}NmS5la&- zc2{5-hAh86B@?$i>Zr37rOmku^CqmW=-{d7oamhstSgWeK2K$A19TC3q_QNoD-4w< zU)-~t{qC@^ChVN~uw$F!rDQjSGZzg*-1xKo4(cLf|BL-aCDEO1xryG_f~9Kg5tU5t zRzPZ)GFXV@Rzk=H$21}QS&QYOh$gT5&}<~^q6<aJ(%iMbD!`l4hd1rcJbDJ(6neJ2 z3SZDqrc{j;6Dj{*c*I7i1v>-uE(lF6*KZId?8Ek*s1nazD&iJ4Ze>qeic~()mrt-h z@HcDTrs!>V^d4=A#-Ju#56HYW=)VeHwA%W&LRpIZ@_cV6TKOb0AU`h|(0RPKD2#{k z6f^jm=E;x2M>rtnUJ{PrKAYY=WNp-{z(ytq>5u@AG_KQK#El(d!35l;5&uoK*pROp z<ceZ6CR4-RN!43xyaH4_zF({2Qe`zXUX_OH&EEO!Plja|Rv)e0^Ff2VlIP+Ehk$mt zoRY;fCYf~O7<%S%?QOx4hdq2A^NbquC}pVb!Sk5AnH7c|Y_qO!#FR#02%lK=u`zHm z{73*qe@@u}(EdX4IQlq6>?w3<LUM`KLAI0#P{Sb+PnEcAYaCBMU#G@@DLCd!q)jMn zVX3h!?lDpm_gKOQaDVY`4j@6h|H$l>Gdk<u6i+7$-p>=&hr4a%T@u1^A#CHm=Xzw) zZC23rVp_1<EL2?|6o)m_q8?0#6N`;H*(PYTqf#_GJ|vXXti<Zh=~(zky>B?C=QIj0 zQF3sK;z{D~l$G9h5**60A<J~lnNq=T=@1DmpTBR)$k=jC2S-M5VS7lJI$tOyo+``V zG+GwUQTB)nsfY4Lq>Lt>#-^QWe~I7itG><H$Ic(TntXJ-04u5!Q6m2)v1SbK0y#=% z<R&*pwbRGL5_;@PRIl9qA-q159cDf;ecd@jNP`h+Y+{-o#lN1-PX|m*xCvED-YJ}j zYjFe>96{38Gx=T*plPQs7zF-EAM$s2NI16Xp!z-cQ${eW0*Je0aFdtpVKp@ZlNtFC zgN8x1;^U)vDKO4U`Ua-CdZZy1o(B&~r%=jpDx`2mBKBc|U7`e`*(C+_s1w!?{fc4K z(c>FgWvgLlYGt56m{YuFt<~FH1}?r5WN@)ZVmH%Syt8>-?=87vlhGA*W}&(a<rLFd zCXedY0{AU*c&nx1yZl7RDq}WS$6lk$(@}qsg>qG~v0FeqO@z{$yORb*F9EV|5U1Ht zG43y9cM4{_<-fz>2)+~E3s*jzX;pFZa1qhS7+io^h$_hgKTP$bN@ic%SQmvc#BB^; zuo;9d<yFc@Fte1tnT^IB?b2-3YPz_o1Iybe5RB(%Ii<;CX?f8z3F0)RlBjxw)TxQF zxo`)LEV{@234_R?=f=k4BmH`-Bwb^J0bNfs$+P0LcNHFS`6BjHiFNCmOq4m=vCK#W z-ieB47qdCeXBv|}*Dn*V-)p%jb)(yk3A=TYkO|fqQB~#TsX;_Ip?UHt6V`a5kEH6x zPj*UINZBhJ#JQEqIoq5}Q*U9Vw$LwGE9-WiVk9`8PrIVn(}kQ9X;%c3mS#JyiEF0J zyf;*myJT_P<gU!S@>fBa`f{thi%aa5;N!q>tZXIdi>Jb(C$L>iPv{mlWhpMWWwv_w zC1Xq|x#x<&FKFTx>&~V`=wIb}xh)I2b8vWq1q*P54s(FZ+ES0=PMXpktXzt6NesFK zt=`Vr!A;oWSQYQtpmC{_YQ6AIo%%hY9q#@#FSB)fiJ_fiApb{nY)g?-C8WM}AHv`Y z2Cm=_9|;EG^Z1iTf23uSEM%nK8zrxCkvj-n37G@eyF5iv5G`wsUxdi?bUxP~bG>VX zNNRwPSZa1FnK6E_Gn~WPeh%cxLz~tpx|373P2a!%-1Y<QD5|<kf`cTpKZI1&36SfA z<L<GNo>y`AOIH}_R%<+`K+E&?6Zvpi%1uH{HUvXb;T~q*w!NeNm>RMRNtICVn=L|Y z<fY!~fYx@*B2g88vOdq0bSiIZkx?qNQ<)*Rp3pksCFWwbVUH~!N*43bCzL1u@Now8 zemdGiE2YF@8n@HstWAVPGOl=1*-sncyoGzx5)J^x8`tgs!95T@rS$&+mq&YGbUEHx zB-i>hQSqm<2n$YNE0^h~vq(7HnY#<`ED~NTLk@gGS8ylhwQER@r0Ob_GY3X{tJJ7v zI(#ctpD~q`<*=`r$ttaD%q<nnEF_GOxv#DDD(dAwh{?~VNOr+2EaRm|AZI_yrAs<# z%YG0uS-sVLM6cf(*D`CxL^vF~LSr`!sb%Jg@Na?uFNtn>H5d!-be08`&pZ=ncb@E3 zFTEM!h9a$;>zGnYq!A;|cbkJDMsV>ixOkFAuHuthP&W@j$|_o9K?hJAGo}{aI=Rx* zFk}{h5#p#^Q`)pq1-a+D^K{Bf_XyEE37lSePr_U3W_I1@*&@)trhy6wn-><hohIiw zdJOGXL{mSU3RJ~s$eD|0ztkQ*nhvb{UjKB11Gc$Ery9-_U7KAwV+~rJGY3+fsC44| zy}n;-LAO$h*(F&T^gjZ)ll#1?Unc{Ms#{8ie~n-q6T77vE)T>StH+n3#1Q~|K|CJC zqybVTXM7Xcnc4-lp;qWD@fZ(KGSG&4nzWkaR=l7815LI6ige3Q!L`In+tdZjPeTWc zH)PO&Q7eWNW1l8b8>^3ZMki%6*6QqLfsI7ijG;DtUr?k}i6dHHR%(pGA{|)8LJVxQ zik}#asr_M$C#w%lCsC>RNR_S{LCB{@!Ms^qtIS~CgKN{%n@SlvdQ3wzTpR^n9`)ln zW5XKnk~eovgqO*f+HE?<6UP$(JnVvx{`giApLrNm@`@7J<~}~W-K7`bZKbvJ+yJle z?*1Jw%F=V!OF$v;u5p(f#4jFA^*FKO&5GwMT3u^#UDQBl51^qce3dcaH_2{HPx4ZM zxsh7(cHMMb^*+{rT^a%qE)Dm5bOy=<<BIz{?@{+xQDGm?az?SAn7!P-kvxp{T;b?I zjDF=`7RJczQ?d7P%Hc@6n+UK*j<+&Kr$6O*ZLcR%YUT7rP-5%Vj?JRa`iL8m9Zt4R z&dR-O3$n1>6qU|_?SvJq4sM((TG0}iy{s|d44DPPTgge`qi$5};k8;Yzxa~?;j`%R z>-o->DZh_}*b3Ia4`ih<RK7`~supHdnlul|N$GQRRYG!<j@w%2T;>4ju<ntw^LELK zn8)n}6b{uK0}0`vcbf9rPH2{1xN$*eBSfl6D*X0ztf9v@rp~CxMK~nRxwJh;`p^W+ zsP0PJUagqC1d8PVv2gcs*HtlrqkAm*+y5w=hT6q7w{vZk&L>$fl{Wi4K8&?Q4POnZ ztA6$J%#x|Du7mRRwjL!>4=`GZDrK6#a4XvMnEP6lx2(v^Rbf{}m_&vM9nmNP)vfjP zCmGpCaK4OCm8#A7azu42vnG6vIttPjO3XnXMP|#Y6anP2?2I`G-Zl#-E;Lqz4VFRo z;Peu&sL;3Hu6xd?18HAV3TfFmA2hJ02a*?clo*F`;CZe-g{m)-jTP$ycX_F$txqnx z=98i}=`(DF`Np+oyF{oh+)}-4tm|A?m6iD<cFpmBNgm98zV~Cuph+9<ByJy@xkR;X zxL7UzhMH^8Ez+3Coft*J=4`pX)ESu{-cQXnDfkv`gP|S+TE;;^WO&(7=^q3)2d&() zl>}V#Q^K?YNT`!k+GSk}AZ6?I<?Ua2UM@*l?}vlm6X6!Cp&*#?D}tO)6TN<H1Fn+# z#6Ih!e2+xueLW>71H25Qof*G6ONS0I=IC?KlzNg@ChR}LTQUN<uc{t(#?&vu*axkK z)ZQa&JjWQZR;87Y;b5#i<W8dB#qx(!pXb@L-2t%^8;V!v`M|PjtezM-kps+_5XfyI z9;R1k%EHTO;OVG+D|^P9Y$RlFXNqz)!@2y6p{=%`3ox>{Mu1DR?CZ3?DaKtr4y&Gs zg@pGc$CW2vL1tQeKHh40IJR|L2q#VyIP8cRd%UVFCM3WlAS~v#bD*CIB?iNAL-kXT zVUzXQ3l&)K%9hee6|qpIWnIEO`jSk_Paw}5Y8;(gjMaPJ>cdAv9(5}z*2aAPE&88K z(*y+9DKclRJn_Ce&F|ly1kb>-PCSN1m`*&JbE|wHGNwyafJ~C3B?mmH9q<`1b?q$8 zN5<e;8Ma-|N8gh=plU~wJ@L)ZtG^JB_vvo`n{Uu9F5`V;Q=uXMbFG4$*1#T$wr%Hy z8lJn__hqP=V}+B*PynSjkUP;4AgS8Po(<vbze^&1k?crya3S+`oxk+65*&eIoffvL zm`E42XKY}){&LzZZ%!)V_l)u-QS7HZmM+$b-K*d8>FYT<(sj?LVoAp-(O4-`+qzoa zdm@Dvm@Y!894zu7&#|1^_^{Zh+1-~{R)>Lgn=z3y_GNE%bscY!3&UoO#wG2C_U^=p z?-z$JJ`ZN(r78q##gmdc<27hxR39QsSwk>L6lJ@TaeQ3Ectu4;nbzZ>ZmUeGD>uAv zo`{I>n5S)TZ)^KZtFnu={BFlp2j@24Sj<zQdV=q#v6y&5VsWqAzZi>YG778p|1=h> z6%hJ{gMnr`4mN+Oo@^Z)hh5SP!^#=^1V;!;+DrEGmTDcpj~0f1OORZB!@e$^VAl{S zAjrs?BQ=IQiF|;8LjFlL=O>Bsmv8>1F7p#?_>b!{ia*sE|6u`W=%=vdKQ0^nZ`aZM z!;T*WoBvur%i&kd@~w?B?#2uFym_|4!$uaV^OahHRWhtgxgIyGIK^R%MrW-0p`*SK zytWdjE3PvQPK8M@4H{96sC26p_0gj!CXS`8){MQa9d-p|$j>sC)PJeT{cjiCe^@X4 zPhOX|Lo)|X5TlO1spmxV>Xs@a_*&1?=l!ITLx2;9YK&05vP%=ww9f>H5GYtOXwuD+ zDU$c<KUOYzb<8kM$I@0JAWoa9Q*k#+wEhpY=YnPfobCu$NwuLV;AqGpfiD3&o3Y?U znCVl#<Tc-{B^fMr$X8Ci>#UvB31^ik#4l=Q%9a?OdmuCiC*Dtsc@i%efH&Hk9IxP> ztzr0_3_txg(-UYiRmvtJ!u-6mCSKr^+5icA?4g?HOeSEE;3gON-zIq?T}}7EX<%8) z^!e1BFG-}k%ixK(BX-LqGf75&k#;^`^MFPxIKP$G!ZE`%Q#v#<Z;iYIx>%4lXU9a_ z6K2k=xvYTRJ(B6|Gp}?0_)k}k|KJPwH1}W7qKy9Q9J@dJ$1C3b#X5y$k=y4fJbCWk z_i*?H^P{)e?RCDUAgn6ZF}n({@D~t<mMQN4HHrRbC;zF|UoTR$*`2z013w7mpD2LR z*Si@CHzkeB9szjL`m4-wc9UnyS4%xKe`9125d5_wg~CP@0}kFQ?SyPH+2Dk|d~ejq zUBwqaMY?8Iden0$XQM1|N%wcw6Mt=(MAfsEx*Bdel;JURCMjXu%qlDei5gEU*@mm; zop6-XQ6C#4&#nxkgY;Q(_o|n5oq0|2vZU_T-_XfwLw01af87wr(<Dn~oLI{&oj9Z} zG~K{*Z?AKXXX)?fNlvT2A`7J99Kzdi$(cCS?T}HvnX*;N5nu*k`tI_P>9rg00ydC$ z;Ie728s%23Tjh+lz!IQXh8k)RrWo&F5UNzY?}1og3nIT(bM4Kym5!-U*_0#ufck<` z^~6((VSQWAQITGgnT+LW@5!Fl0jDt4C<n~?c>JV0Ylqup|G11e#5MUo$Je{CIH+ob zTG(lye>YgWQpYxv_`>V%J0c>udHEYk%aRJBNZJ!O3nlRhQVIyIPL10;ObUZAR){oy zrxG}M%tU*9NKxlCxC!GY3Z)SMR1xG$_5kQ`8q8=O`u>!OrM*;mmiqoHcf4nh<3|vm z=Z7Pkr<aP{SPqjAC_osp0BG&n!Wi=e0}jynsi~j((FIt%BX;<3=NLHo*l7es*Bh#D z-6vOqwkhk3h+#nu3y6qk+{m6&cmrYxT`eb|c|opJGoCF^42lS`(X8R*M#t-fGLuS= zdb%}Yc23>)7*0-o-iwJv_XP0Dqq7?xM#XC@sZH?clBTTAX;p{OA~3l*hFiACBr&QJ zmkNf}>uSGw+hxo{4^TA)yw55lS761I03BI3@$e;t&L$_cBaK-Aj6;-Vxm3hs-V@=q zIjAdf?5Yo3PsgfKs*58p{Pg1MbJSi&@V=e$1np`H<9`Dv5EAs{;d8RD)9aAg8#1hs zJ3jn`#e~C)ayD42r%OFhF32NB@OMG_<u`^~#@mN8a!2{YH9_AYCDm>~yIP&?Y--q| zkPs9A2=TvEA3y_o)l=?_DmXCDznCOQci?@i*|t}2bZf7~iY~(Hu1=Dj88Dx;e>jB& zo4H98Pn8fULoRR{_$Gl_=f!jJInODaJ(g2iNceN5gwsa_c_A_rmeNB}zrA>}=gw3+ zN@g@$G#?*(Z1l;yvKI9)G?c#!UDiv`XUx-33js;x9Ki1v=Bxp=Ue%f8q1@fJ>vrt- zzD`jHo<EMWX-+WN9LkkX3C^AThBZ#1=*-1yKn!OK7Ib#uA)6cSe~AvNoNCm&RYT4` zlzKW92(Yie2vzSr>-HcAI>fy?tO9#pL3s<Eay4^vK*Dd<JZqd462P@&HD$)w8(T&k zsL`EK)^0)cAY!Q!1evnAFC5&6STE%L)?Fpn<0hav#Cdm+5YAiL<=d|<#^bhO*_sI( z5MRn_HhBdF!<8`7IpFZ<<5P;hQ@3s0UfOuK%I?FhEi0yor~RZAX8S}(5j@@I>PZh2 z)^m^(duR?2M01zrcP#>s<P7~sJby4*QH&JNh44%Qv(>?b<7TiPG}{Pd(550jK37Re z$&C452@u!BvKw*uT9`{zljYt<@%Q&e{sy5zUZWA@<<Ivc_;z{tbK<YyY{z$>c8vWX z@Wb()ImiAW5V9BkYg5;s@48M?=<5bo3^6BP;vMIFm}49xJS6JUZuD?ww->(^cfAW- z-JSV(#K8SVgRUmk5lEcw$6gh6i?JmY5)uD!*0VlGzLW#BCKoaM9rSkCo*BRpL0m_W zjLR8^Jqw{u<+HtBI)QiiwK41;utO|xk5Dxhdbz=RY&%D*b6FIu{hY<m>8^1R#xLVd zd)C`+D~Ovo<N10lo_EoZlW@%Ap#G_aH`0$GjV`2S1do3ZRDHWD-+5^s^@HFDXOQHu z^@Cu_E1%Z<%jzl4H#LxH-lfNN%4~6?zBzYcy~>NRyId5&gSqIOqkTW)@`K=%=R(zO zexL3;K_bN7my<5wXq%Ji2wjt)*QQHtp#;vV&)rJw8hcd|9X^`N-q|_OiUkMZrrFU` zm6gXln>v+smUFdq`Kk#CBP=XSUODc8p<Pl4B%2j*7jKy`N^m2?Hrzn%b&8^`Q+Clq z)yKLOBl^eDLR<l7F`j`3Ltj8s?6XlF?$Q?RsNhw$)GBkW-?SeuSaX|q`O0g7syy%T z=Bu}MYPX{b0hJG%)sVKfjgZN$C)clC2m2A-Es&vKJF!uO>x<aT6iy>UJcZZ3uPk3k zOME+Iob7IA?rVO#NHY0;dNVmPc^@qYS#s%E5&n$l#v1QGiA5gs)H2UPf4_0Ir1lNi zS=BI~sDR?1o}zfCd$(kX|6v9b8=dgzexz&53dm&?M5fXiUMnDNT9)dsv3;Hi_oyG{ zG+#e*c4{DxGMm|dw6r#}zPEh}e@B3p9SUrVHF<uVl(|^Lt$XN4KgXLI%U9Slu<tTH z<J9A9ULG4ZWW;BdHf3mhAL8-(onmVH<#jT)Lj;0XX{F9?1U8B+wv;W2O+`WHn-K)! zRLM<_cmav~b6wxRlD$0&OuW>noYoil9|3Uzj{Y|O8+5kYW8Z(NZR6Kunso~(op$|< z^^|M6L{m7*8!l$aD{);yQJImS-hLBK-!G2)>^0y5P}YN2u7-VF)#E67OYvkfP%&un zVWm;eboH1eDN+eWYUd?5MX~&(gYg>dGY4-I$EDJxb!lAJUU|=kRJC6j2C~?ahFjeB zB#{>DTGV@Zt8Iw2AOaI{RhwW|x;ubQ%i&I;w8&&oJj6QJA-N%hWA@LIWGPR&mr=ZA zpDI#=>Jw|`*#?E^e#Nb%MQRO}ZrkiatZt$SBB+}-<Dx?@q})EK^&HufNvOF}dy$e$ zW9HK5AN}Xk-}NK^0QyCU*Z`b8qsg6PIm<iryI(Q;S9?2f`5j7UHk3G%aNJQDq|><{ zA$@i-{KxRdl3K}?8qXrkTc0`-tDBDFHQff&8YA6OL8Gdz+*-d9_aZM1kXv}tfCo#B mW1Zby!uw}v_^qSXU)l0>xzd8<`kyx3pI;BJ(04!pKmXaO3n>Wz literal 0 HcmV?d00001 diff --git a/application/app/config/auth.config.js b/application/app/config/auth.config.js new file mode 100644 index 0000000..d727e19 --- /dev/null +++ b/application/app/config/auth.config.js @@ -0,0 +1,3 @@ +module.exports = { + secret: "sdfASF214!!§%§asfRA43" + }; \ No newline at end of file diff --git a/application/app/controllers/auth.controller.js b/application/app/controllers/auth.controller.js new file mode 100644 index 0000000..b35ca5e --- /dev/null +++ b/application/app/controllers/auth.controller.js @@ -0,0 +1,80 @@ +const path = require('path') +const config = require(path.join(__dirname, "../config/auth.config")) +const db = require(path.join(__dirname, "../models")) +const User = db.user +const Metrics = require('../../metrics') + +var jwt = require("jsonwebtoken") +var bcrypt = require("bcryptjs") +const { Server } = require('http') + + +//Here we signup an user. The Password provided during signup process gets encrypted and saved into the database +exports.signup = (req, res) => { + console.log(req.body) + const user = new User({ + username: req.body.username, + email: req.body.email, + password: bcrypt.hashSync(req.body.password, 8), + }); + + + user.save((err, user) => { + if (err) { + res.status(500).send({ message: err }); + return; + } + Metrics.registercounter.inc() + res.redirect('/login'); + }); +}; + +//Signing in we compare the hased passwort from the database with the password provided while signing in. +//If it matches we sign an token that expires after 24 hours +exports.signin = (req, res) => { + User.findOne({ + username: req.body.username, + }) + .exec((err, user) => { + if (err) { + Metrics.failedLogins.inc() + res.status(500).send({ message: err }); + return; + } + + if (!user) { + Metrics.failedLogins.inc() + return res.status(404).send({ message: "User Not found." }); + } + + var passwordIsValid = bcrypt.compareSync( + req.body.password, + user.password + ); + + if (!passwordIsValid) { + Metrics.failedLogins.inc() + return res.status(401).send({ message: "Invalid Password!" }); + } + + var token = jwt.sign({ id: user.id }, config.secret, { + expiresIn: 86400, // 24 hours + }); + + + req.session.token = token; + Metrics.onlineUser.inc() + res.redirect('/chat') + }); +}; + +//Signing out +exports.signout = async (req, res) => { + try { + req.session = null; + Metrics.onlineUser.dec() + res.redirect('/login') + } catch (err) { + this.next(err); + } +}; \ No newline at end of file diff --git a/application/app/controllers/user.controller.js b/application/app/controllers/user.controller.js new file mode 100644 index 0000000..7149f7a --- /dev/null +++ b/application/app/controllers/user.controller.js @@ -0,0 +1,9 @@ +exports.allAccess = (req, res) => { + res.status(200).send("Public Content."); + }; + + exports.userBoard = (req, res) => { + res.redirect('/index'); + }; + + \ No newline at end of file diff --git a/application/app/middlewares/authJWT.js b/application/app/middlewares/authJWT.js new file mode 100644 index 0000000..e0bdf8f --- /dev/null +++ b/application/app/middlewares/authJWT.js @@ -0,0 +1,28 @@ +const path = require('path') +const jwt = require("jsonwebtoken"); +const config = require(path.join(__dirname,"../config/auth.config.js")) +const db = require(path.join(__dirname,"../models")) +const User = db.user; + + +//Here we check if the token created at the signup is correct. We need this to access whenever we request data we need to be logged in +verifyToken = (req, res, next) => { + let token = req.session.token; + + if (!token) { + return res.status(403).send({ message: "No token provided!" }); + } + + jwt.verify(token, config.secret, (err, decoded) => { + if (err) { + return res.status(401).send({ message: "Unauthorized!" }); + } + req.userId = decoded.id; + next(); + }); +}; + +const authJwt = { + verifyToken +}; +module.exports = authJwt; \ No newline at end of file diff --git a/application/app/middlewares/index.js b/application/app/middlewares/index.js new file mode 100644 index 0000000..74d6ce5 --- /dev/null +++ b/application/app/middlewares/index.js @@ -0,0 +1,8 @@ +const path = require('path') +const authJwt = require(path.join(__dirname,"/authJWT")); +const verifySignUp = require(path.join(__dirname,"/verifySignUp")); + +module.exports = { + authJwt, + verifySignUp +}; \ No newline at end of file diff --git a/application/app/middlewares/verifySignUp.js b/application/app/middlewares/verifySignUp.js new file mode 100644 index 0000000..8ac981b --- /dev/null +++ b/application/app/middlewares/verifySignUp.js @@ -0,0 +1,48 @@ +const path = require('path') +const db = require(path.join(__dirname,"../models")) +const User = db.user; + + +//Checks for Duplicated Usernames or emails during registration +//At our Database we lookup for existing entries with the username or email. If one exists we return the fitting error +checkDuplicateUsernameOrEmail = (req, res, next) => { + // Username + console.log(req.body) + User.findOne({ + username: req.body.username + }).exec((err, user) => { + if (err) { + res.status(500).send({ message: err }); + return; + } + + if (user) { + res.status(400).send({ message: "Failed! Username is already in use!" }); + return; + } + + // Email + User.findOne({ + email: req.body.email + }).exec((err, user) => { + if (err) { + res.status(500).send({ message: err }); + return; + } + + if (user) { + res.status(400).send({ message: "Failed! Email is already in use!" }); + return; + } + + next(); + }); + }); +}; + + +const verifySignUp = { + checkDuplicateUsernameOrEmail +}; + +module.exports = verifySignUp; \ No newline at end of file diff --git a/application/app/models/index.js b/application/app/models/index.js new file mode 100644 index 0000000..052df42 --- /dev/null +++ b/application/app/models/index.js @@ -0,0 +1,12 @@ +const path = require('path') +const mongoose = require('mongoose'); +mongoose.Promise = global.Promise; + +const db = {}; + +db.mongoose = mongoose; + +db.user = require(path.join(__dirname,"/user.model")) + + +module.exports = db; \ No newline at end of file diff --git a/application/app/models/user.model.js b/application/app/models/user.model.js new file mode 100644 index 0000000..ea31659 --- /dev/null +++ b/application/app/models/user.model.js @@ -0,0 +1,12 @@ +const mongoose = require("mongoose"); + +const User = mongoose.model( + "User", + new mongoose.Schema({ + username: String, + email: String, + password: String + }) +); + +module.exports = User; \ No newline at end of file diff --git a/application/app/routes/auth.routes.js b/application/app/routes/auth.routes.js new file mode 100644 index 0000000..4812156 --- /dev/null +++ b/application/app/routes/auth.routes.js @@ -0,0 +1,24 @@ +const path = require('path') +const { verifySignUp } = require(path.join(__dirname,"../middlewares")); +const controller = require(path.join(__dirname,"../controllers/auth.controller")); + + + +module.exports = function(app) { + app.use(function(req, res, next) { + res.header( + "Access-Control-Allow-Headers", + "Origin, Content-Type, Accept" + ); + next(); + }); + + app.post( + "/api/auth/signup", + controller.signup + ); + + app.post("/api/auth/signin", controller.signin); + + app.post("/api/auth/signout", controller.signout); +}; \ No newline at end of file diff --git a/application/app/routes/user.routes.js b/application/app/routes/user.routes.js new file mode 100644 index 0000000..1ef4156 --- /dev/null +++ b/application/app/routes/user.routes.js @@ -0,0 +1,18 @@ +const path = require('path') +const { authJwt } = require(path.join(__dirname,"../middlewares")) +const controller = require(path.join(__dirname,"../controllers/user.controller")) + +module.exports = function(app) { + app.use(function(req, res, next) { + res.header( + "Access-Control-Allow-Headers", + "Origin, Content-Type, Accept" + ); + next(); + }); + + app.get("/api/test/all", controller.allAccess); + + app.get("/chat", [authJwt.verifyToken], controller.userBoard); + +}; \ No newline at end of file diff --git a/application/index.html b/application/index.html new file mode 100644 index 0000000..f1275c4 --- /dev/null +++ b/application/index.html @@ -0,0 +1,63 @@ +<!DOCTYPE html> +<html> + <head> + <title>Socket.IO chat</title> + <style> + body { margin: 0; padding-bottom: 3rem; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; } + + #form { background: rgba(0, 0, 0, 0.15); padding: 0.25rem; position: fixed; bottom: 0; left: 0; right: 0; display: flex; height: 3rem; box-sizing: border-box; backdrop-filter: blur(10px); } + #input { border: none; padding: 0 1rem; flex-grow: 1; border-radius: 2rem; margin: 0.25rem; } + #input:focus { outline: none; } + #form > button { background: #333; border: none; padding: 0 1rem; margin: 0.25rem; border-radius: 3px; outline: none; color: #fff; } + + #messages { list-style-type: none; margin: 0; padding: 0; } + #messages > li { padding: 0.5rem 1rem; } + #messages > li:nth-child(odd) { background: #efefef; } + </style> + </head> + <body> + <ul id="messages"></ul> + <form id="form" action=""> + <input id="input" autocomplete="off" /><button>Send</button> <input type="file" onchange="upload(files)"> + </form> + <form action="/api/auth/signout", method="post"> + <input type="submit" value="Logout"> + </form> + </body> + <script type="application/javascript" src="/socket.io/socket.io.js"></script> + <script> + var socket = io() + + + var messages = document.getElementById('messages'); + var form = document.getElementById('form'); + var input = document.getElementById('input'); + + + + function upload(files) { + socket.emit("upload", files[0], (status) => { + console.log(status); + }); + } + + + form.addEventListener('submit', function(e) { + e.preventDefault(); + if (input.value) { + socket.emit('chat message', input.value); + input.value = ''; + } + }); + + + + socket.on('chat message', function(msg) { + var item = document.createElement('li'); + item.textContent = msg; + messages.appendChild(item); + window.scrollTo(0, document.body.scrollHeight); + }); + </script> + </body> +</html> \ No newline at end of file diff --git a/application/metrics.js b/application/metrics.js new file mode 100644 index 0000000..4909f3b --- /dev/null +++ b/application/metrics.js @@ -0,0 +1,50 @@ +const client = require('prom-client') + +const register = new client.Registry() + +register.setDefaultLabels({ + app: 'cloud-computing-chat' +}) + +client.collectDefaultMetrics({register}) + + +const msgSent = new client.Counter({ + name: 'msgSent', + help: 'total number of messages sent' + }) + +const msgLength = new client.Histogram({ + name: 'msgLength', + help: 'length of message sent', + buckets: [1, 3, 5, 8, 10, 15, 20, 30, 40, 50, 70] + }) + +const registercounter = new client.Counter({ + name: 'usercounter', + help: 'total number of registered users' + }) + +const onlineUser = new client.Gauge({ + name: 'onlineUser', + help: 'total number of current online users' +}) + +const failedLogins = new client.Counter({ + name: 'failedLogins', + help: 'number of failed logins' +}) + +register.registerMetric(registercounter) +register.registerMetric(msgSent) +register.registerMetric(msgLength) +register.registerMetric(onlineUser) +register.registerMetric(failedLogins) + + +exports.register = register +exports.msgSent = msgSent +exports.msgLength = msgLength +exports.onlineUser = onlineUser +exports.registercounter = registercounter +exports.failedLogins = failedLogins \ No newline at end of file diff --git a/application/package-lock.json b/application/package-lock.json new file mode 100644 index 0000000..8eff28c --- /dev/null +++ b/application/package-lock.json @@ -0,0 +1,5611 @@ +{ + "name": "panic", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "panic", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "bcryptjs": "^2.4.3", + "client": "^0.0.1", + "cookie-session": "^2.0.0", + "cors": "^2.8.5", + "crypto": "^1.0.1", + "ejs": "^3.1.8", + "express": "^4.18.2", + "jsonwebtoken": "^8.5.1", + "mongoose": "^6.7.0", + "path": "^0.12.7", + "prom": "^0.0.3", + "prom-client": "^14.1.0", + "socket.io": "^4.5.3" + } + }, + "node_modules/@aws-crypto/ie11-detection": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz", + "integrity": "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==", + "optional": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", + "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", + "optional": true, + "dependencies": { + "@aws-crypto/ie11-detection": "^2.0.0", + "@aws-crypto/sha256-js": "^2.0.0", + "@aws-crypto/supports-web-crypto": "^2.0.0", + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", + "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", + "optional": true, + "dependencies": { + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz", + "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==", + "optional": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-crypto/util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz", + "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.110.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-sdk/abort-controller": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.198.0.tgz", + "integrity": "sha512-kmK1fNJ5nkBH23wOrAdxWcVtG/NNCaX66cxr90jnbGvSAeNRi5nLLqlmQOyZ0RRg+tpNCec+N/qqfxAmmD3NdQ==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.199.0.tgz", + "integrity": "sha512-F7VvJkaSYBBiAAtlrWO6Hq5GbqARMerihtlFvQra2Uy0bSX/okNgefurjjW1Gijh4xk6brWPO+46GD9OpZXtcQ==", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/client-sts": "3.199.0", + "@aws-sdk/config-resolver": "3.198.0", + "@aws-sdk/credential-provider-node": "3.199.0", + "@aws-sdk/fetch-http-handler": "3.199.0", + "@aws-sdk/hash-node": "3.198.0", + "@aws-sdk/invalid-dependency": "3.198.0", + "@aws-sdk/middleware-content-length": "3.199.0", + "@aws-sdk/middleware-endpoint": "3.198.0", + "@aws-sdk/middleware-host-header": "3.198.0", + "@aws-sdk/middleware-logger": "3.198.0", + "@aws-sdk/middleware-recursion-detection": "3.198.0", + "@aws-sdk/middleware-retry": "3.198.0", + "@aws-sdk/middleware-serde": "3.198.0", + "@aws-sdk/middleware-signing": "3.198.0", + "@aws-sdk/middleware-stack": "3.198.0", + "@aws-sdk/middleware-user-agent": "3.198.0", + "@aws-sdk/node-config-provider": "3.198.0", + "@aws-sdk/node-http-handler": "3.199.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/smithy-client": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/url-parser": "3.198.0", + "@aws-sdk/util-base64-browser": "3.188.0", + "@aws-sdk/util-base64-node": "3.188.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.188.0", + "@aws-sdk/util-defaults-mode-browser": "3.198.0", + "@aws-sdk/util-defaults-mode-node": "3.198.0", + "@aws-sdk/util-endpoints": "3.198.0", + "@aws-sdk/util-user-agent-browser": "3.198.0", + "@aws-sdk/util-user-agent-node": "3.198.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.199.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.199.0.tgz", + "integrity": "sha512-xRTI39cLcCU1lGlSaE2arCPzRwUY16Oq46fGoe+9pwalDL3oKeE6uq/idTxPzPZdZFhzpLUVc0QdfwGDYhJpXg==", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.198.0", + "@aws-sdk/fetch-http-handler": "3.199.0", + "@aws-sdk/hash-node": "3.198.0", + "@aws-sdk/invalid-dependency": "3.198.0", + "@aws-sdk/middleware-content-length": "3.199.0", + "@aws-sdk/middleware-endpoint": "3.198.0", + "@aws-sdk/middleware-host-header": "3.198.0", + "@aws-sdk/middleware-logger": "3.198.0", + "@aws-sdk/middleware-recursion-detection": "3.198.0", + "@aws-sdk/middleware-retry": "3.198.0", + "@aws-sdk/middleware-serde": "3.198.0", + "@aws-sdk/middleware-stack": "3.198.0", + "@aws-sdk/middleware-user-agent": "3.198.0", + "@aws-sdk/node-config-provider": "3.198.0", + "@aws-sdk/node-http-handler": "3.199.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/smithy-client": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/url-parser": "3.198.0", + "@aws-sdk/util-base64-browser": "3.188.0", + "@aws-sdk/util-base64-node": "3.188.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.188.0", + "@aws-sdk/util-defaults-mode-browser": "3.198.0", + "@aws-sdk/util-defaults-mode-node": "3.198.0", + "@aws-sdk/util-endpoints": "3.198.0", + "@aws-sdk/util-user-agent-browser": "3.198.0", + "@aws-sdk/util-user-agent-node": "3.198.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.199.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.199.0.tgz", + "integrity": "sha512-ly7kLi/KFRr9RrvTVVlDAXlROkInTMRy4BL02Ugw7brSPysUJabzdlDB5gxC+jbeq8qpai/vCybePf6lgrcvFw==", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.198.0", + "@aws-sdk/credential-provider-node": "3.199.0", + "@aws-sdk/fetch-http-handler": "3.199.0", + "@aws-sdk/hash-node": "3.198.0", + "@aws-sdk/invalid-dependency": "3.198.0", + "@aws-sdk/middleware-content-length": "3.199.0", + "@aws-sdk/middleware-endpoint": "3.198.0", + "@aws-sdk/middleware-host-header": "3.198.0", + "@aws-sdk/middleware-logger": "3.198.0", + "@aws-sdk/middleware-recursion-detection": "3.198.0", + "@aws-sdk/middleware-retry": "3.198.0", + "@aws-sdk/middleware-sdk-sts": "3.199.0", + "@aws-sdk/middleware-serde": "3.198.0", + "@aws-sdk/middleware-signing": "3.198.0", + "@aws-sdk/middleware-stack": "3.198.0", + "@aws-sdk/middleware-user-agent": "3.198.0", + "@aws-sdk/node-config-provider": "3.198.0", + "@aws-sdk/node-http-handler": "3.199.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/smithy-client": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/url-parser": "3.198.0", + "@aws-sdk/util-base64-browser": "3.188.0", + "@aws-sdk/util-base64-node": "3.188.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.188.0", + "@aws-sdk/util-defaults-mode-browser": "3.198.0", + "@aws-sdk/util-defaults-mode-node": "3.198.0", + "@aws-sdk/util-endpoints": "3.198.0", + "@aws-sdk/util-user-agent-browser": "3.198.0", + "@aws-sdk/util-user-agent-node": "3.198.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.199.0", + "fast-xml-parser": "4.0.11", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@aws-sdk/config-resolver": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.198.0.tgz", + "integrity": "sha512-CxpbkTOfOYZLWcNgcZqooSIlLnixzHVz6skDgxOfeN2vohNOgt8hwU0Dmif3sC4AeyeV0CBm7ew9tg/WzsBxhg==", + "optional": true, + "dependencies": { + "@aws-sdk/signature-v4": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-config-provider": "3.188.0", + "@aws-sdk/util-middleware": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.199.0.tgz", + "integrity": "sha512-vhdvaCq9Q/LPvAdTN9HFnsR713iDb1qI7yTmnGzJYym1J9a2pR4YQvZr1pRyXbn176ORkgEiPMNSoDw8CiCRlg==", + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.199.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.198.0.tgz", + "integrity": "sha512-Psui5iNdbHrHNF14vejORMtSEaH7EOt51pQcfmP1jk8Tinf+KMMMdbOqyzL4LHYwLTLH9Cr6m6UGrJXdmFiIZA==", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-imds": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.198.0.tgz", + "integrity": "sha512-p2xMCo3whCnXd5/dH738rAVURXhlppjRNDv0sCkDcVtr3exn4s5x5ednFM8K0zNo/hsqjqFbK3jT4W72bgHphw==", + "optional": true, + "dependencies": { + "@aws-sdk/node-config-provider": "3.198.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/url-parser": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.199.0.tgz", + "integrity": "sha512-6m3WtK+oKGyo7iCHjORwmHN4wUp4F9j79dSedEf0EYxDbHpH9yMnEE6hYV11GdmM+/i8x8DYA45apAZo8gCIcA==", + "optional": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.198.0", + "@aws-sdk/credential-provider-imds": "3.198.0", + "@aws-sdk/credential-provider-sso": "3.199.0", + "@aws-sdk/credential-provider-web-identity": "3.198.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/shared-ini-file-loader": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.199.0.tgz", + "integrity": "sha512-pgJhOnTHj+ZZkcN9v7R+m2VnkQi4vvyA7N6k3EDWMQ8tdo48ofwObORkzA4gPX+TPuIjpYa1lU03dpY4zuzJKQ==", + "optional": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.198.0", + "@aws-sdk/credential-provider-imds": "3.198.0", + "@aws-sdk/credential-provider-ini": "3.199.0", + "@aws-sdk/credential-provider-process": "3.198.0", + "@aws-sdk/credential-provider-sso": "3.199.0", + "@aws-sdk/credential-provider-web-identity": "3.198.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/shared-ini-file-loader": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.198.0.tgz", + "integrity": "sha512-LWiwKDCui7ILr+6opBzLCCAho9ZOppuEthUdKZx6T7+yD2cQT0caN5PkVUBMtfTu9+DZnHD2bpIL1T2KEaqEUw==", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/shared-ini-file-loader": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.199.0.tgz", + "integrity": "sha512-aMNZkEj/5RN6jSbfkVadjNblExJtHCJGvcnKnzIGfXLgqOFoWGzY+YIHmn/GTgCnpuMbN5hXYXV6w76HwIvWGw==", + "optional": true, + "dependencies": { + "@aws-sdk/client-sso": "3.199.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/shared-ini-file-loader": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.198.0.tgz", + "integrity": "sha512-D+fhnmqN18P/Roq5oxVq53J3mqS9Oi9IJaIKdrbdK/FibqOyKmTERaLKWkONwG35qExSECOpoEGn7ioUMQgAgQ==", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.199.0.tgz", + "integrity": "sha512-PpOgvV7akew9cXrrEEF+h6H/JGURVCPw+UsvN0yjN8oSexwe0sUzKG1AVIrHYiAWkZKIohtsv7NNzBAKvJ4Qmw==", + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.199.0", + "@aws-sdk/client-sso": "3.199.0", + "@aws-sdk/client-sts": "3.199.0", + "@aws-sdk/credential-provider-cognito-identity": "3.199.0", + "@aws-sdk/credential-provider-env": "3.198.0", + "@aws-sdk/credential-provider-imds": "3.198.0", + "@aws-sdk/credential-provider-ini": "3.199.0", + "@aws-sdk/credential-provider-node": "3.199.0", + "@aws-sdk/credential-provider-process": "3.198.0", + "@aws-sdk/credential-provider-sso": "3.199.0", + "@aws-sdk/credential-provider-web-identity": "3.198.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/shared-ini-file-loader": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/fetch-http-handler": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.199.0.tgz", + "integrity": "sha512-o1jRUMoJR/HOhqA2euYIQxzKLkbqBGwMGH3ahm5eqEJ9kCp84c2KsxT/HOEqjvAQi3f3np8VlTPbuscvDKUN4w==", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/querystring-builder": "3.199.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-base64-browser": "3.188.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/hash-node": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.198.0.tgz", + "integrity": "sha512-+UTjEEQlvT4+IIwLpN36Qb1DOQHe3zHkvIVe6SjLln+Z/UEK6NhMI0tsJNbiW38WAfwOjJ+otrRBHuD93SBRxQ==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-buffer-from": "3.188.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/invalid-dependency": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.198.0.tgz", + "integrity": "sha512-lbwS+H7WYk/g9/nHoTgt7xkrZCJ/OJuBfsx41RvMxW7zPxJeHYD/PvgPvYOB9lTUBkr7SDCeMoS5PtGdAwVOfg==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/is-array-buffer": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.188.0.tgz", + "integrity": "sha512-n69N4zJZCNd87Rf4NzufPzhactUeM877Y0Tp/F3KiHqGeTnVjYUa4Lv1vLBjqtfjYb2HWT3NKlYn5yzrhaEwiQ==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-content-length": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.199.0.tgz", + "integrity": "sha512-Q76J6xZl36tqS401TGs/NPIu8lYbNG1EtqxM88CWe/u0SH+D4LIR9AMXq9c4PH0ldIMWAGVGbRLLc0/H3rPyBg==", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-endpoint": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.198.0.tgz", + "integrity": "sha512-J/rQkIXUbFJAlD6LSDVGU4bGbwD/2pvF5N39ePzvaJ8SwV9Y78XER/2fIAERhFNppuYinGdBdMLiPsC6qPT6ZA==", + "optional": true, + "dependencies": { + "@aws-sdk/middleware-serde": "3.198.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/signature-v4": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/url-parser": "3.198.0", + "@aws-sdk/util-config-provider": "3.188.0", + "@aws-sdk/util-middleware": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.198.0.tgz", + "integrity": "sha512-keHstrdw0bFzEkUrkMQ9+UxaKu5b1K87cH6guqLf4JBo04CT+2kPRlDSma65XCi2U81zfTnWApk+/SPPFN3otA==", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.198.0.tgz", + "integrity": "sha512-IFvNO4MI80FyltPzrEpYHMG47EYXawcD5zTzcbimpeLTpyrLY/zkSJqh5cVFu+NcDWsuD6U1geuvfN+i+2Bg1Q==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.198.0.tgz", + "integrity": "sha512-VHyz5xBJOaLZwdL94XWB04XCA+pwbURy+4ESF66vIY1umWgfanbZPkvw1XlRaQJydOmyIDFqhNG2AzB28WN9iw==", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-retry": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.198.0.tgz", + "integrity": "sha512-dwv5QJYTPNkmjKcQ0RtClkNumFomECzxjXvSiyjD9Ft6AWHcUeyqJfGKbmP5mFHpezWckK1qcT6cPMVrJilgjw==", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/service-error-classification": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-middleware": "3.198.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-sts": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.199.0.tgz", + "integrity": "sha512-ISM3Lx1AM2IiHpcQPdwHHvnW/dRyC/jGy2fHQvmYxj8x2oIYnEXxk4vA7DFnrYupxwi2yTSp3k8On2+1VgMjiw==", + "optional": true, + "dependencies": { + "@aws-sdk/middleware-signing": "3.198.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/signature-v4": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-serde": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.198.0.tgz", + "integrity": "sha512-RlAua2691KCFabp3kjnsd5p+1nQbULTK1Ia/jvlTAyG4tGOeA0x1At6KZoI1LfkN+VjstV5/3b9aOCtcFuxkhA==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-signing": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.198.0.tgz", + "integrity": "sha512-HPY9d1c1CUiV6JBVxiiQQgYfmELl1cn6h0TI00EmOAM5/wxUoiYBX2cGWf2NRF9/iBTppZjxwAKMYPIqF5Tkvw==", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/signature-v4": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-middleware": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-stack": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.198.0.tgz", + "integrity": "sha512-5mHRjiJFHxziXOiChW3kttQHjgqH5qW9xRIDJepyf+NRJ60L8bZj0t8oGecqVqo27S02+UvrFgOzoRvBbATVFw==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.198.0.tgz", + "integrity": "sha512-SMteVixqoSazxUN1ROMj+nSf/zgTMRVPaTCKU0iEAtrE7ilp9Xv6FEC7ffm1MM9xIoAZ2eY1eAtY3uN0yxBm4A==", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/node-config-provider": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.198.0.tgz", + "integrity": "sha512-W+msdp94ZjR8mJMtGPHjWHsIdsOu3HaVX4x+AQq9cj7+pg/D5CvWw7fnbkUQeG+V8Ia/aqzBNxlUpr/FAeQY/g==", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/shared-ini-file-loader": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.199.0.tgz", + "integrity": "sha512-F+6T7MHHm0b3+GVRxEnFCuIyqUQb0b8a3Hne3QFV4cxtnX58O/SSF8KlpuGZwobivdRC/AKDaTdI/eA0PQfegA==", + "optional": true, + "dependencies": { + "@aws-sdk/abort-controller": "3.198.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/querystring-builder": "3.199.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/property-provider": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.198.0.tgz", + "integrity": "sha512-jnQeJgZlk+6YJS2/eFz6pm9+XHzvCB0jTxHBwt2zYwZfcJ98viRQWMYfkY1XsemuQb/uIoHRBRhFXaJSLpXVDQ==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/protocol-http": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.198.0.tgz", + "integrity": "sha512-x+Qc+kwYqaZvLJ/820rxoFUIgSnSS/XlUHwmS+CTn7nJ68CeL3dzmae6TVOslpVBLCvoS2CbEpEoBbofOpsbGw==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/querystring-builder": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.199.0.tgz", + "integrity": "sha512-P4MWPzCqtH3sgI9iXXVdYirYVgggtg4uq5MVefnfHW+osZu8ZR+UKJw5ojAFfOCqcnKOU/xJjz185RroOjrzYQ==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-uri-escape": "3.188.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/querystring-parser": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.198.0.tgz", + "integrity": "sha512-oMybZYINxNiwSELR7tOwqu+1S7CeEC3g5L4IQXk2wvVx96HEf3sQgLr1wbmV1b7lEnTuH9OrgI5RgDUBVqipdw==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/service-error-classification": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.198.0.tgz", + "integrity": "sha512-bVsWOIYuDtSmwJtPF1pU84x2TL20Pj02C0+/6ua4qLvRatVKFbj1wxWiU/nKvgjiGFX8VWuQUKMzXUYQfYn4nw==", + "optional": true, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/shared-ini-file-loader": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.198.0.tgz", + "integrity": "sha512-n3Ykuvtb6f+WQuhcMVumY9VxQwPp8+cMSc5s6YHptkvZkz/cd2wmPhO914gKE/i2MoC/zQsFCXT8Z1YnS7k8sA==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.198.0.tgz", + "integrity": "sha512-8EIyEt7ElTK/tQamYyB16IGwc7EwtLlSVcksaiII780ZtYULnOjogi/UImCYqSejQw+EHhXfbj14HRQT56rqEQ==", + "optional": true, + "dependencies": { + "@aws-sdk/is-array-buffer": "3.188.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-hex-encoding": "3.188.0", + "@aws-sdk/util-middleware": "3.198.0", + "@aws-sdk/util-uri-escape": "3.188.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/smithy-client": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.198.0.tgz", + "integrity": "sha512-IKUzJSoIkxYkYpRdlrh6REtDcW5c87FKeqtMC8VTpaTxrXwnJOqbenp7IwArwOnbXp4aIVmzdxT/nvQrftlgWg==", + "optional": true, + "dependencies": { + "@aws-sdk/middleware-stack": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.198.0.tgz", + "integrity": "sha512-ljgY9Pgb2CSRrf4IeaNy5gkhTsBae9STKc/mqfScSzvZOvRHu+BOIAGM33fDoCwxD1viKNVJvU1KemiI57Gbvw==", + "optional": true, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/url-parser": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.198.0.tgz", + "integrity": "sha512-wm3+OTDWKsMEOlLGvJ+jxCcOXMjgd5qBDVbu2bTiyTahc2poNlM7kKhSwL4I8PkmGZVAqfAlHD4Wj38WecHQPw==", + "optional": true, + "dependencies": { + "@aws-sdk/querystring-parser": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-base64-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.188.0.tgz", + "integrity": "sha512-qlH+5NZBLiyKziL335BEPedYxX6j+p7KFRWXvDQox9S+s+gLCayednpK+fteOhBenCcR9fUZOVuAPScy1I8qCg==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-base64-node": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.188.0.tgz", + "integrity": "sha512-r1dccRsRjKq+OhVRUfqFiW3sGgZBjHbMeHLbrAs9jrOjU2PTQ8PSzAXLvX/9lmp7YjmX17Qvlsg0NCr1tbB9OA==", + "optional": true, + "dependencies": { + "@aws-sdk/util-buffer-from": "3.188.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-body-length-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz", + "integrity": "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-body-length-node": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.188.0.tgz", + "integrity": "sha512-XwqP3vxk60MKp4YDdvDeCD6BPOiG2e+/Ou4AofZOy5/toB6NKz2pFNibQIUg2+jc7mPMnGnvOW3MQEgSJ+gu/Q==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-buffer-from": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.188.0.tgz", + "integrity": "sha512-NX1WXZ8TH20IZb4jPFT2CnLKSqZWddGxtfiWxD9M47YOtq/SSQeR82fhqqVjJn4P8w2F5E28f+Du4ntg/sGcxA==", + "optional": true, + "dependencies": { + "@aws-sdk/is-array-buffer": "3.188.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-config-provider": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.188.0.tgz", + "integrity": "sha512-LBA7tLbi7v4uvbOJhSnjJrxbcRifKK/1ZVK94JTV2MNSCCyNkFotyEI5UWDl10YKriTIUyf7o5cakpiDZ3O4xg==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-browser": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.198.0.tgz", + "integrity": "sha512-IG4iVKQdFjdVFMH5KbSUY2l48wL9aCX/qzoCyTPjKkVumvmwnfkt5OCslkNcaqRdvp5o7QL7aHbq0EZ3K7Ya0A==", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-node": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.198.0.tgz", + "integrity": "sha512-LBKSKJjEs0D8tjalblDNmq9DWYTDQ1wVUksAIBO2gQU+EZHJwPb9qxyAk32gbnVTOYceZpJ5/vAGT7speDzEyw==", + "optional": true, + "dependencies": { + "@aws-sdk/config-resolver": "3.198.0", + "@aws-sdk/credential-provider-imds": "3.198.0", + "@aws-sdk/node-config-provider": "3.198.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.198.0.tgz", + "integrity": "sha512-fpeJNVoe/QsIcGybgJ+D2jZcUFi7d37FlMiZd9eVnS5LyMGDNH8tVS7aPT7dgb0z30/FKMBIKKG6QxDGxFaqjQ==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-hex-encoding": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.188.0.tgz", + "integrity": "sha512-QyWovTtjQ2RYxqVM+STPh65owSqzuXURnfoof778spyX4iQ4z46wOge1YV2ZtwS8w5LWd9eeVvDrLu5POPYOnA==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.188.0.tgz", + "integrity": "sha512-SxobBVLZkkLSawTCfeQnhVX3Azm9O+C2dngZVe1+BqtF8+retUbVTs7OfYeWBlawVkULKF2e781lTzEHBBjCzw==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-middleware": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.198.0.tgz", + "integrity": "sha512-hEdkuGRWhZdEb1plzkGCN2kT8SqiPrEQHngB+1q7pjFJcKWkYkmaLHGw2zhbg1EVNpcGmj5DzCSWzwoPkpDRsw==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-uri-escape": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.188.0.tgz", + "integrity": "sha512-4Y6AYZMT483Tiuq8dxz5WHIiPNdSFPGrl6tRTo2Oi2FcwypwmFhqgEGcqxeXDUJktvaCBxeA08DLr/AemVhPCg==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.198.0.tgz", + "integrity": "sha512-XIwaaKtrEsxsayk1yUNjx15AZenP6YRaRDa3f6dhGO+D6OOXP+0S38O5lakyDDGW7nkwkmXa2NIv/OPHPYJ+jQ==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.198.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.198.0.tgz", + "integrity": "sha512-21bi3pNO7jvo3l9LtMJyR48ERN69PuBqMnwnjsDVqyIFBbnZr/JR5rWQx7jdZ0iUt6mRlgZ17xHXlGUGMCxznA==", + "optional": true, + "dependencies": { + "@aws-sdk/node-config-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz", + "integrity": "sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-utf8-node": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.199.0.tgz", + "integrity": "sha512-Kk3qCdGbe5k0PUE8EBgMsRxNstvDCoWStYWjNwsHWuc/hJitSf44PColzXw6xxHqH1sY+6LcgIaMwJZ5C4bB6w==", + "optional": true, + "dependencies": { + "@aws-sdk/util-buffer-from": "3.188.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + }, + "node_modules/@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + }, + "node_modules/@types/node": { + "version": "18.11.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.8.tgz", + "integrity": "sha512-uGwPWlE0Hj972KkHtCDVwZ8O39GmyjfMane1Z3GUBGGnkZ2USDq7SxLpVIiIHpweY9DS0QTDH0Nw7RNBsAAZ5A==" + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/aws-sign": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/aws-sign/-/aws-sign-0.2.0.tgz", + "integrity": "sha512-6P7/Ls5F6++DsKu7iacris7qq/AZSWaX+gT4dtSyUxM82ePxWxaP7Slo82ZO3ZTx6GSKxQHAQlmFvM8e+Dd8ZA==", + "engines": { + "node": "*" + } + }, + "node_modules/backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", + "dependencies": { + "precond": "0.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==" + }, + "node_modules/better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha512-bYeph2DFlpK1XmGs6fvlLRUN29QISM3GBuUwSFsMY2XRx4AvC0WNCS57j4c/xGrK2RS24C1w3YoBOsw9fT46tQ==", + "dependencies": { + "callsite": "1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/bintrees": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", + "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/boom": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-0.3.1.tgz", + "integrity": "sha512-xWrlXnkK46TjEW7HU5G39AXWuG5aiHz3++zk3bBzF4mfnVCkpcYbwsnLUqMmfZNgPEYS/AI8MH+vmJxH5Kz0PA==", + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "dependencies": { + "hoek": "0.4.x" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/boom/node_modules/hoek": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.4.2.tgz", + "integrity": "sha512-Yj/N2TCrS0d8jvZgUpq9sDNt8/ABwTxPJW4+8QT0KXCMxOtRfUCUTEZEYyvMSgfDT3MGvwgO+NHfWPobagAIug==", + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "optional": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/bson": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.0.tgz", + "integrity": "sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/client": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client/-/client-0.0.1.tgz", + "integrity": "sha512-XjoueeoiUNMrH0BGD/joA1RNxhzw5aGhRo15MmdPDV6RWCcUeKRBXrcH1qJNTepOxDwLAZbyLy0Owvw3V9jYxg==", + "dependencies": { + "backoff": "^2.4.0", + "cookie": "^0.1.2", + "getenv": "~0.3.0", + "q": "~0.9.7", + "restler": "~2.0.1", + "socket.io-client": "~1.0.6", + "underscore": "^1.6.0", + "winston": "^0.7.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/client/node_modules/after": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz", + "integrity": "sha512-SuI3vWhCFeSmkmmJ3efyuOkrhGyp/AuHthh3F5DinGYh2kR9t/0xUlm3/Vn2qMScfgg+cKho5fW7TUEYUhYeiA==" + }, + "node_modules/client/node_modules/arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha512-6ZjfQaBSy6CuIH0+B0NrxMfDE5VIOCP/5gOqSpEIsaAZx9/giszzrXg6PZ7G51U/n88UmlAgYLNQ9wAnII7PJA==" + }, + "node_modules/client/node_modules/base64-arraybuffer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz", + "integrity": "sha512-ewBKKVVPIl78B26mYQHYlaxR7NydMiD/GxwLNIwTAfLIE4xhN2Gxcy30//azq5UrejXjzGpWjcBu3NUJxzMMzg==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/client/node_modules/blob": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.2.tgz", + "integrity": "sha512-BoCcDt8zBGShn6DawAGQw37s9SSs+fEjiZWDzyB+841PbOogcR2X7LGlM4sR3Zsiq/zoyl8MFWDfN6oDSlveBQ==" + }, + "node_modules/client/node_modules/component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha512-YhIbp3PJiznERfjlIkK0ue4obZxt2S60+0W8z24ZymOHT8sHloOqWOqZRU2eN5OlY8U08VFsP02letcu26FilA==" + }, + "node_modules/client/node_modules/cookie": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.5.tgz", + "integrity": "sha512-/lhu+NGBI5pOLXILS07DrPXYX0QDD/ejVhbwoCUcLPBqMEK9b++f9rUhAlhLkcTz9mV6QSeD+w3cHJ96rMZaFQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/client/node_modules/debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha512-EohAb3+DSHSGx8carOSKJe8G0ayV5/i609OD0J2orCkuyae7SyZSz2aoLmQF2s0Pj5gITDebwPH7GFBlqOUQ1Q==", + "engines": { + "node": "*" + } + }, + "node_modules/client/node_modules/engine.io-client": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.3.1.tgz", + "integrity": "sha512-bTOZMqAe7HXhyA/2T7Fve04b/ZZruTHSOqa+yn8U4RFSyRAVPePjopOgJOUNciEfuXo1gx850P5LzaQU28/p3w==", + "dependencies": { + "component-emitter": "1.1.2", + "component-inherit": "0.0.3", + "debug": "0.7.4", + "engine.io-parser": "1.0.6", + "has-cors": "1.0.3", + "indexof": "0.0.1", + "parsejson": "0.0.1", + "parseqs": "0.0.2", + "parseuri": "0.0.2", + "ws": "0.4.31", + "xmlhttprequest": "https://github.com/LearnBoost/node-XMLHttpRequest/archive/0f36d0b5ebc03d85f860d42a64ae9791e1daa433.tar.gz" + } + }, + "node_modules/client/node_modules/engine.io-parser": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.0.6.tgz", + "integrity": "sha512-ipbmiNj4OfAL9csof0FlI9L2jkU/lgcUphHjnTDo1KABsA21WtsVy/1OjhCj8xxhNIHtxEZ3/t7uB45gEMhD4g==", + "dependencies": { + "after": "0.8.1", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.2", + "blob": "0.0.2", + "utf8": "2.0.0" + } + }, + "node_modules/client/node_modules/has-cors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.0.3.tgz", + "integrity": "sha512-Mxk1ba23PNtB3zPigreijApS3uuH9bhgZkqQtLQj7ydWHsGeb9uOtk4gsK6mZj4rYG6VNS/CT9G1XkYfgItpKg==", + "dependencies": { + "global": "https://github.com/component/global/archive/v2.0.1.tar.gz" + } + }, + "node_modules/client/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/client/node_modules/parseqs": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz", + "integrity": "sha512-vyyyfQGUFZnDhgrrdn+hh1JuOfvbXU5oRr6dijfkSIbaFuxGgTSCA/RNVcsADmo0k2NX6wERVTMKkXokjuObJA==", + "dependencies": { + "better-assert": "~1.0.0" + } + }, + "node_modules/client/node_modules/parseuri": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.2.tgz", + "integrity": "sha512-m0H+R0u5LXOx8sbxufnvgKrRLpkVpvtMf0AyWXYSqLwo2MWrVEgCIbgpaSVa398xl6wTLe0A7CGhiC4hBdEzHQ==", + "dependencies": { + "better-assert": "~1.0.0" + } + }, + "node_modules/client/node_modules/socket.io-client": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.0.6.tgz", + "integrity": "sha512-itdtz6fQBTFIDBP4+hJox0OlT+SbCVdENjPgjMup3ehu7OsiG6t0FYBXCx+k/upt9lbeyp9BmUNNi5EfnGa5Vw==", + "dependencies": { + "component-bind": "1.0.0", + "component-emitter": "1.1.2", + "debug": "0.7.4", + "engine.io-client": "1.3.1", + "has-binary-data": "0.1.1", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.2", + "socket.io-parser": "2.2.0", + "to-array": "0.1.3" + } + }, + "node_modules/client/node_modules/socket.io-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.0.tgz", + "integrity": "sha512-uW3UiLVibAyleKq8r/yZe1oPO51olhY18T6HtnN0iI6RLqJfYC0YiyAFlsPw1+8I0Z1qFd8jFLTRZo2vr6ISxA==", + "dependencies": { + "debug": "0.7.4", + "emitter": "http://github.com/component/emitter/archive/1.0.1.tar.gz", + "isarray": "0.0.1", + "json3": "3.2.6" + } + }, + "node_modules/client/node_modules/to-array": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.3.tgz", + "integrity": "sha512-JQk/QMS4oHyU2VufVeyjN25dcnZnr1PV1pa1oKSj7l5tVO9WrU62og3fYzB3mrgJZZgBxdrrA/v6iZzMDuyFYw==" + }, + "node_modules/client/node_modules/ws": { + "version": "0.4.31", + "resolved": "https://registry.npmjs.org/ws/-/ws-0.4.31.tgz", + "integrity": "sha512-mWiVQ9qZGPXvLxQ4xGy58Ix5Bw0L99SB+hDT8L59bty4fbnQczaGl4YEWR7AzLQGbvPn/30r9/o41dPiSuUmYw==", + "hasInstallScript": true, + "dependencies": { + "commander": "~0.6.1", + "nan": "~0.3.0", + "options": ">=0.0.5", + "tinycolor": "0.x" + }, + "bin": { + "wscat": "bin/wscat" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha512-qfexlmLp9MyrkajQVyjEDb0Vj+KhRgR/rxLiVhaihlT+ZkX0lReqtH6Ack40CvMDERR4b5eFp3CreskpBs1Pig==", + "dependencies": { + "delayed-stream": "0.0.5" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha512-0fLycpl1UMTGX257hRsu/arL/cUbcvQM4zMKwvLvzXtfdezIV4yotPS2dYtknF+NmEfWSoCEF6+hj9XLm/6hEw==", + "engines": { + "node": ">= 0.4.x" + } + }, + "node_modules/component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==" + }, + "node_modules/component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-jar": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/cookie-jar/-/cookie-jar-0.2.0.tgz", + "integrity": "sha512-yImk9AY90xjoUsN2fWHoIhVgveXqiZv7LDqUTZEzVBHyzfay8AjcJITUZpz2fTYLh6rnP+7GogiuRCo/5j2epg==", + "engines": { + "node": "*" + } + }, + "node_modules/cookie-session": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cookie-session/-/cookie-session-2.0.0.tgz", + "integrity": "sha512-hKvgoThbw00zQOleSlUr2qpvuNweoqBtxrmx0UFosx6AGi9lYtLoA+RbsvknrEX8Pr6MDbdWAb2j6SnMn+lPsg==", + "dependencies": { + "cookies": "0.8.0", + "debug": "3.2.7", + "on-headers": "~1.0.2", + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cookie-session/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/cookie-session/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cryptiles": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.1.0.tgz", + "integrity": "sha512-WiOGszxSaVHd8T4hlu5Xcqs2uUYxbvotBP171ag2pLPKSwSKeTJYnzd98/YWV3jQYk/rpMHa3r01cQfN8SZrHQ==", + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "dependencies": { + "boom": "0.3.x" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in." + }, + "node_modules/cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/delayed-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha512-v+7uBd1pqe5YtgPacIIbZ8HuHeLFVNe4mUEyFDXL6KiqzEykjbw+5mXZXpGFgNVasdL4jWKgaKIXrEHiynN1LA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/emitter": { + "version": "1.0.1", + "resolved": "http://github.com/component/emitter/archive/1.0.1.tar.gz", + "integrity": "sha512-k3Da+QreMb9waaGCHNAHox5QqxnZEYlQmvIVYwQibrI6OpIRyIIyFGgDV5dXRLr1AJ32JLqEh0VxQEq20dFskw==", + "dependencies": { + "indexof": "0.0.1" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/fast-xml-parser": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz", + "integrity": "sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==", + "optional": true, + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forever-agent": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.2.0.tgz", + "integrity": "sha512-IasWSRIlfPnBZY1K9jEUK3PwsScR4mrcK+aNBJzGoPnW+S9b6f8I8ScyH4cehEOFNqnjGpP2gCaA22gqSV1xQA==", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.0.10.tgz", + "integrity": "sha512-Z9/PpT/agxXi80nMpOH6GFD7XOr6mwk5aWMxDt/KMY+Nm7e4FnRMjddM4/mLPJhpmp6alY1F/1JQpRE6z07xng==", + "dependencies": { + "async": "~0.2.7", + "combined-stream": "~0.0.4", + "mime": "~1.2.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" + }, + "node_modules/form-data/node_modules/mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw==" + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getenv": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-0.3.0.tgz", + "integrity": "sha512-E5JuanH2c71x2d24Pg9WpQMs0YpbiVPFBMNJtDC4M2VG+zPc3j3JvaoAD2dj9r/ERkw6Va19HBephneUyeENoQ==", + "engines": { + "node": "*" + } + }, + "node_modules/global": { + "version": "2.0.1", + "resolved": "https://github.com/component/global/archive/v2.0.1.tar.gz", + "integrity": "sha512-O91OcV/NbdmQJPHaRu2ekSP7bqFRLWgqSwaJvqHPZHUwmHBagQYTOra29+LnzzG3lZkXH1ANzHzfCxtAPM9HMA==", + "license": "MIT" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-binary-data": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/has-binary-data/-/has-binary-data-0.1.1.tgz", + "integrity": "sha512-XqIrqIgPlA2gxvHKudDsLJt8Xu8B4DvkHyUWGmLWYOAO0rFOL94Ds4NSveSZ1fCjWX22tQgIiRpDKAETex8GCQ==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/has-binary-data/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hawk": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-0.10.2.tgz", + "integrity": "sha512-BjpmnZ95odv7KOIsydfNTAxfGOGaVc6xbYL4fozWl45PWjDqskix0LHAekmGkpnrCAI6+AZRvJIXNTAllj+e6w==", + "deprecated": "This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", + "dependencies": { + "boom": "0.3.x", + "cryptiles": "0.1.x", + "hoek": "0.7.x", + "sntp": "0.1.x" + }, + "engines": { + "node": "0.8.x" + } + }, + "node_modules/hoek": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.7.6.tgz", + "integrity": "sha512-z75muWk69yyjWn6nNzJP0pnfgcewtSTs7uBolGUA7kWNdCYZukzHn3sYqUirhXul7qp9WBUwNT/7ieJZNveJqg==", + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "engines": { + "node": "0.8.x" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/json-stringify-safe": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-3.0.0.tgz", + "integrity": "sha512-VSSuxEAawKLYlCabQOR7YDijQ69zPqQBOriUuCgNhlAqtU7RPr41gPpaSs6WkEu+ZOtUequpXWbI51CS+Z/gMQ==" + }, + "node_modules/json3": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.2.6.tgz", + "integrity": "sha512-KA+GHhYTLTo7Ri4DyjwUgW8kn98AYtVZtBC94qL5yD0ZSYct8/eF8qBmTNyk+gPE578bKeIL4WBq+MUyd1I26g==", + "deprecated": "Please use the native JSON object instead of JSON 3" + }, + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=4", + "npm": ">=1.4.28" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/kareem": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz", + "integrity": "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA==" + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mongodb": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.11.0.tgz", + "integrity": "sha512-9l9n4Nk2BYZzljW3vHah3Z0rfS5npKw6ktnkmFgTcnzaXH1DRm3pDl6VMHu84EVb1lzmSaJC4OzWZqTkB5i2wg==", + "dependencies": { + "bson": "^4.7.0", + "denque": "^2.1.0", + "mongodb-connection-string-url": "^2.5.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">=12.9.0" + }, + "optionalDependencies": { + "@aws-sdk/credential-providers": "^3.186.0", + "saslprep": "^1.0.3" + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.4.tgz", + "integrity": "sha512-SeAxuWs0ez3iI3vvmLk/j2y+zHwigTDKQhtdxTgt5ZCOQQS5+HW4g45/Xw5vzzbn7oQXCNQ24Z40AkJsizEy7w==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongoose": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.7.0.tgz", + "integrity": "sha512-Jt6NSiSpgcrSBzRb9+YwkpjjVuq4H532c4jbf+5Nu0wd/nIPHSOKhr8jnQZ8gQTdPjubF+szR5r6KMSqaY4/Wg==", + "dependencies": { + "bson": "^4.6.5", + "kareem": "2.4.1", + "mongodb": "4.11.0", + "mpath": "0.9.0", + "mquery": "4.0.3", + "ms": "2.1.3", + "sift": "16.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/mquery/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mquery/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/nan": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-0.3.2.tgz", + "integrity": "sha512-V9/Pyy5Oelv6vVJP9X+dAzU3IO19j6YXrJnODHxP2h54hTvfFQGahdsQV6Ule/UukiEJk1SkQ/aUyWUm61RBQw==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha512-TkCET/3rr9mUuRp+CpO7qfgT++aAxfDRaalQhwPFzI9BY/2rCDn6OfpZOVggi1AXfTPpfkTrg5f5WQx5G1uLxA==", + "deprecated": "Use uuid module instead", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/oauth-sign": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.2.0.tgz", + "integrity": "sha512-4DtiD64CwPJ5vZ636j/KtM7DxWbX1KlkqwbqbEAxI3BCpBrQdrKOv8vC/36U6gfm1CVapy6QmcVxPnXPPQApTA==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha512-S0sN3agnVh2SZNEIGc0N1X4Z5K0JeFbGBrnuZpsxuUh5XLF0BnvWkMjRXo/zGKLd/eghvNIKcx1pQkmUjXIyrA==" + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/parsejson": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz", + "integrity": "sha512-W9CRvTfYQY/kbRc5Q6YTWarb/QDxdEGbd6RCP8CLUQDJV89RVHoS2A0dZYNtAcq31fulGNN4ZhAhiQQazwlKJg==", + "dependencies": { + "better-assert": "~1.0.0" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/prom": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/prom/-/prom-0.0.3.tgz", + "integrity": "sha512-OghtgULoL3MuVNhZZCbCv55EgBpLj3lGH7m8qIdE2wbpQTPtUbA8S6K/toS5RxmjzL3nT7Iz7uypm4v1KGsM7A==" + }, + "node_modules/prom-client": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.1.0.tgz", + "integrity": "sha512-iFWCchQmi4170omLpFXbzz62SQTmPhtBL35v0qGEVRHKcqIeiexaoYeP0vfZTujxEq3tA87iqOdRbC9svS1B9A==", + "dependencies": { + "tdigest": "^0.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/q/-/q-0.9.7.tgz", + "integrity": "sha512-ijt0LhxWClXBtc1RCt8H0WhlZLAdVX26nWbpsJy+Hblmp81d2F/pFsvlrJhJDDruFHM+ECtxP0H0HzGSrARkwg==", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/request": { + "version": "2.16.6", + "resolved": "https://registry.npmjs.org/request/-/request-2.16.6.tgz", + "integrity": "sha512-TfD4kMo40kwuOpO7GYfAZpb2wYdw7yvTIglPNgPPSmp2Fz6MKNvPLla40FQ/ypdhy6B2jRNz3VlCjPD6mnzsmA==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "engines": [ + "node >= 0.8.0" + ], + "dependencies": { + "aws-sign": "~0.2.0", + "cookie-jar": "~0.2.0", + "forever-agent": "~0.2.0", + "form-data": "~0.0.3", + "hawk": "~0.10.2", + "json-stringify-safe": "~3.0.0", + "mime": "~1.2.7", + "node-uuid": "~1.4.0", + "oauth-sign": "~0.2.0", + "qs": "~0.5.4", + "tunnel-agent": "~0.2.0" + } + }, + "node_modules/request/node_modules/mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw==" + }, + "node_modules/request/node_modules/qs": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz", + "integrity": "sha512-KbOrQrP5Ye+0gmq+hwxoJwAFRwExACWqwxj1IDFFgqOw9Poxy3wwSbafd9ZqP6T6ykMfnxM573kt/a4i9ybatQ==", + "engines": { + "node": "*" + } + }, + "node_modules/restler": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/restler/-/restler-2.0.1.tgz", + "integrity": "sha512-j2gyQdGeFPKl8FRbFJ/XR7yCmL31pxD9l+zTcwZ2m7e8psU46X2lJ20GCsEFJD4rxtAaswzGJtKQhNLYFFtN0g==", + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sift": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz", + "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ==" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sntp": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.1.2.tgz", + "integrity": "sha512-6fsOpJYQAQcO/UeW7T9mJwEenJymdU77o+gNiompGAammlSa+C49Oyt79ta/kgVbT13l4JAuKlo8FNvUnVjvEQ==", + "deprecated": "This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", + "dependencies": { + "hoek": "0.4.x" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/sntp/node_modules/hoek": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.4.2.tgz", + "integrity": "sha512-Yj/N2TCrS0d8jvZgUpq9sDNt8/ABwTxPJW4+8QT0KXCMxOtRfUCUTEZEYyvMSgfDT3MGvwgO+NHfWPobagAIug==", + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/socket.io": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", + "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" + }, + "node_modules/socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "optional": true + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tdigest": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", + "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", + "dependencies": { + "bintrees": "1.0.2" + } + }, + "node_modules/tinycolor": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz", + "integrity": "sha512-+CorETse1kl98xg0WAzii8DTT4ABF4R3nquhrkIbVGcw1T8JYs5Gfx9xEfGINPUZGDj9C4BmOtuKeaTtuuRolg==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "optional": true + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/tunnel-agent": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.2.0.tgz", + "integrity": "sha512-PXy4q1PH88BK0pcGOEMXFAslyBuRWz1wxLfPXTlYFd41eyUgjOALaVGbWJN1ymjbnBzjWunVSKmrrMMh8oLaZA==", + "engines": { + "node": "*" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utf8": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.0.0.tgz", + "integrity": "sha512-jWXHr+bQ8RsWazLzVY3V7XACPTbBHYSg/VoDVok+DBQk5ULm0AuBCNb9tGmjq2H+znnkBFwjhzzCbn9G3xlYcA==" + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/winston": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.7.3.tgz", + "integrity": "sha512-iVTT8tf9YnTyfZX+aEUj2fl6WBRet7za6vdjMeyF8SA80Vii2rreM5XH+5qmpBV9uJGj8jz8BozvTDcroVq/eA==", + "dependencies": { + "async": "0.2.x", + "colors": "0.6.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "pkginfo": "0.3.x", + "request": "2.16.x", + "stack-trace": "0.0.x" + }, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/winston/node_modules/async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" + }, + "node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xmlhttprequest": { + "version": "1.5.0", + "resolved": "https://github.com/LearnBoost/node-XMLHttpRequest/archive/0f36d0b5ebc03d85f860d42a64ae9791e1daa433.tar.gz", + "integrity": "sha512-TVSZwoeUQ7OKhb8jnQdSxGFz+lm4MGWmhG0deeYg85VQT74x5LcSrKeXHE0ZIzEycgqQ5mF8r8e1AykA7TpNAQ==", + "engines": { + "node": ">=0.4.0" + } + } + }, + "dependencies": { + "@aws-crypto/ie11-detection": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz", + "integrity": "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==", + "optional": true, + "requires": { + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } + } + }, + "@aws-crypto/sha256-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", + "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", + "optional": true, + "requires": { + "@aws-crypto/ie11-detection": "^2.0.0", + "@aws-crypto/sha256-js": "^2.0.0", + "@aws-crypto/supports-web-crypto": "^2.0.0", + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } + } + }, + "@aws-crypto/sha256-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", + "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", + "optional": true, + "requires": { + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } + } + }, + "@aws-crypto/supports-web-crypto": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz", + "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==", + "optional": true, + "requires": { + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } + } + }, + "@aws-crypto/util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz", + "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==", + "optional": true, + "requires": { + "@aws-sdk/types": "^3.110.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } + } + }, + "@aws-sdk/abort-controller": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.198.0.tgz", + "integrity": "sha512-kmK1fNJ5nkBH23wOrAdxWcVtG/NNCaX66cxr90jnbGvSAeNRi5nLLqlmQOyZ0RRg+tpNCec+N/qqfxAmmD3NdQ==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/client-cognito-identity": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.199.0.tgz", + "integrity": "sha512-F7VvJkaSYBBiAAtlrWO6Hq5GbqARMerihtlFvQra2Uy0bSX/okNgefurjjW1Gijh4xk6brWPO+46GD9OpZXtcQ==", + "optional": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/client-sts": "3.199.0", + "@aws-sdk/config-resolver": "3.198.0", + "@aws-sdk/credential-provider-node": "3.199.0", + "@aws-sdk/fetch-http-handler": "3.199.0", + "@aws-sdk/hash-node": "3.198.0", + "@aws-sdk/invalid-dependency": "3.198.0", + "@aws-sdk/middleware-content-length": "3.199.0", + "@aws-sdk/middleware-endpoint": "3.198.0", + "@aws-sdk/middleware-host-header": "3.198.0", + "@aws-sdk/middleware-logger": "3.198.0", + "@aws-sdk/middleware-recursion-detection": "3.198.0", + "@aws-sdk/middleware-retry": "3.198.0", + "@aws-sdk/middleware-serde": "3.198.0", + "@aws-sdk/middleware-signing": "3.198.0", + "@aws-sdk/middleware-stack": "3.198.0", + "@aws-sdk/middleware-user-agent": "3.198.0", + "@aws-sdk/node-config-provider": "3.198.0", + "@aws-sdk/node-http-handler": "3.199.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/smithy-client": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/url-parser": "3.198.0", + "@aws-sdk/util-base64-browser": "3.188.0", + "@aws-sdk/util-base64-node": "3.188.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.188.0", + "@aws-sdk/util-defaults-mode-browser": "3.198.0", + "@aws-sdk/util-defaults-mode-node": "3.198.0", + "@aws-sdk/util-endpoints": "3.198.0", + "@aws-sdk/util-user-agent-browser": "3.198.0", + "@aws-sdk/util-user-agent-node": "3.198.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.199.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/client-sso": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.199.0.tgz", + "integrity": "sha512-xRTI39cLcCU1lGlSaE2arCPzRwUY16Oq46fGoe+9pwalDL3oKeE6uq/idTxPzPZdZFhzpLUVc0QdfwGDYhJpXg==", + "optional": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.198.0", + "@aws-sdk/fetch-http-handler": "3.199.0", + "@aws-sdk/hash-node": "3.198.0", + "@aws-sdk/invalid-dependency": "3.198.0", + "@aws-sdk/middleware-content-length": "3.199.0", + "@aws-sdk/middleware-endpoint": "3.198.0", + "@aws-sdk/middleware-host-header": "3.198.0", + "@aws-sdk/middleware-logger": "3.198.0", + "@aws-sdk/middleware-recursion-detection": "3.198.0", + "@aws-sdk/middleware-retry": "3.198.0", + "@aws-sdk/middleware-serde": "3.198.0", + "@aws-sdk/middleware-stack": "3.198.0", + "@aws-sdk/middleware-user-agent": "3.198.0", + "@aws-sdk/node-config-provider": "3.198.0", + "@aws-sdk/node-http-handler": "3.199.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/smithy-client": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/url-parser": "3.198.0", + "@aws-sdk/util-base64-browser": "3.188.0", + "@aws-sdk/util-base64-node": "3.188.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.188.0", + "@aws-sdk/util-defaults-mode-browser": "3.198.0", + "@aws-sdk/util-defaults-mode-node": "3.198.0", + "@aws-sdk/util-endpoints": "3.198.0", + "@aws-sdk/util-user-agent-browser": "3.198.0", + "@aws-sdk/util-user-agent-node": "3.198.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.199.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/client-sts": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.199.0.tgz", + "integrity": "sha512-ly7kLi/KFRr9RrvTVVlDAXlROkInTMRy4BL02Ugw7brSPysUJabzdlDB5gxC+jbeq8qpai/vCybePf6lgrcvFw==", + "optional": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.198.0", + "@aws-sdk/credential-provider-node": "3.199.0", + "@aws-sdk/fetch-http-handler": "3.199.0", + "@aws-sdk/hash-node": "3.198.0", + "@aws-sdk/invalid-dependency": "3.198.0", + "@aws-sdk/middleware-content-length": "3.199.0", + "@aws-sdk/middleware-endpoint": "3.198.0", + "@aws-sdk/middleware-host-header": "3.198.0", + "@aws-sdk/middleware-logger": "3.198.0", + "@aws-sdk/middleware-recursion-detection": "3.198.0", + "@aws-sdk/middleware-retry": "3.198.0", + "@aws-sdk/middleware-sdk-sts": "3.199.0", + "@aws-sdk/middleware-serde": "3.198.0", + "@aws-sdk/middleware-signing": "3.198.0", + "@aws-sdk/middleware-stack": "3.198.0", + "@aws-sdk/middleware-user-agent": "3.198.0", + "@aws-sdk/node-config-provider": "3.198.0", + "@aws-sdk/node-http-handler": "3.199.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/smithy-client": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/url-parser": "3.198.0", + "@aws-sdk/util-base64-browser": "3.188.0", + "@aws-sdk/util-base64-node": "3.188.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.188.0", + "@aws-sdk/util-defaults-mode-browser": "3.198.0", + "@aws-sdk/util-defaults-mode-node": "3.198.0", + "@aws-sdk/util-endpoints": "3.198.0", + "@aws-sdk/util-user-agent-browser": "3.198.0", + "@aws-sdk/util-user-agent-node": "3.198.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.199.0", + "fast-xml-parser": "4.0.11", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/config-resolver": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.198.0.tgz", + "integrity": "sha512-CxpbkTOfOYZLWcNgcZqooSIlLnixzHVz6skDgxOfeN2vohNOgt8hwU0Dmif3sC4AeyeV0CBm7ew9tg/WzsBxhg==", + "optional": true, + "requires": { + "@aws-sdk/signature-v4": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-config-provider": "3.188.0", + "@aws-sdk/util-middleware": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-cognito-identity": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.199.0.tgz", + "integrity": "sha512-vhdvaCq9Q/LPvAdTN9HFnsR713iDb1qI7yTmnGzJYym1J9a2pR4YQvZr1pRyXbn176ORkgEiPMNSoDw8CiCRlg==", + "optional": true, + "requires": { + "@aws-sdk/client-cognito-identity": "3.199.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-env": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.198.0.tgz", + "integrity": "sha512-Psui5iNdbHrHNF14vejORMtSEaH7EOt51pQcfmP1jk8Tinf+KMMMdbOqyzL4LHYwLTLH9Cr6m6UGrJXdmFiIZA==", + "optional": true, + "requires": { + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-imds": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.198.0.tgz", + "integrity": "sha512-p2xMCo3whCnXd5/dH738rAVURXhlppjRNDv0sCkDcVtr3exn4s5x5ednFM8K0zNo/hsqjqFbK3jT4W72bgHphw==", + "optional": true, + "requires": { + "@aws-sdk/node-config-provider": "3.198.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/url-parser": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-ini": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.199.0.tgz", + "integrity": "sha512-6m3WtK+oKGyo7iCHjORwmHN4wUp4F9j79dSedEf0EYxDbHpH9yMnEE6hYV11GdmM+/i8x8DYA45apAZo8gCIcA==", + "optional": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.198.0", + "@aws-sdk/credential-provider-imds": "3.198.0", + "@aws-sdk/credential-provider-sso": "3.199.0", + "@aws-sdk/credential-provider-web-identity": "3.198.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/shared-ini-file-loader": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-node": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.199.0.tgz", + "integrity": "sha512-pgJhOnTHj+ZZkcN9v7R+m2VnkQi4vvyA7N6k3EDWMQ8tdo48ofwObORkzA4gPX+TPuIjpYa1lU03dpY4zuzJKQ==", + "optional": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.198.0", + "@aws-sdk/credential-provider-imds": "3.198.0", + "@aws-sdk/credential-provider-ini": "3.199.0", + "@aws-sdk/credential-provider-process": "3.198.0", + "@aws-sdk/credential-provider-sso": "3.199.0", + "@aws-sdk/credential-provider-web-identity": "3.198.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/shared-ini-file-loader": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-process": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.198.0.tgz", + "integrity": "sha512-LWiwKDCui7ILr+6opBzLCCAho9ZOppuEthUdKZx6T7+yD2cQT0caN5PkVUBMtfTu9+DZnHD2bpIL1T2KEaqEUw==", + "optional": true, + "requires": { + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/shared-ini-file-loader": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-sso": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.199.0.tgz", + "integrity": "sha512-aMNZkEj/5RN6jSbfkVadjNblExJtHCJGvcnKnzIGfXLgqOFoWGzY+YIHmn/GTgCnpuMbN5hXYXV6w76HwIvWGw==", + "optional": true, + "requires": { + "@aws-sdk/client-sso": "3.199.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/shared-ini-file-loader": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-web-identity": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.198.0.tgz", + "integrity": "sha512-D+fhnmqN18P/Roq5oxVq53J3mqS9Oi9IJaIKdrbdK/FibqOyKmTERaLKWkONwG35qExSECOpoEGn7ioUMQgAgQ==", + "optional": true, + "requires": { + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-providers": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.199.0.tgz", + "integrity": "sha512-PpOgvV7akew9cXrrEEF+h6H/JGURVCPw+UsvN0yjN8oSexwe0sUzKG1AVIrHYiAWkZKIohtsv7NNzBAKvJ4Qmw==", + "optional": true, + "requires": { + "@aws-sdk/client-cognito-identity": "3.199.0", + "@aws-sdk/client-sso": "3.199.0", + "@aws-sdk/client-sts": "3.199.0", + "@aws-sdk/credential-provider-cognito-identity": "3.199.0", + "@aws-sdk/credential-provider-env": "3.198.0", + "@aws-sdk/credential-provider-imds": "3.198.0", + "@aws-sdk/credential-provider-ini": "3.199.0", + "@aws-sdk/credential-provider-node": "3.199.0", + "@aws-sdk/credential-provider-process": "3.198.0", + "@aws-sdk/credential-provider-sso": "3.199.0", + "@aws-sdk/credential-provider-web-identity": "3.198.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/shared-ini-file-loader": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/fetch-http-handler": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.199.0.tgz", + "integrity": "sha512-o1jRUMoJR/HOhqA2euYIQxzKLkbqBGwMGH3ahm5eqEJ9kCp84c2KsxT/HOEqjvAQi3f3np8VlTPbuscvDKUN4w==", + "optional": true, + "requires": { + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/querystring-builder": "3.199.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-base64-browser": "3.188.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/hash-node": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.198.0.tgz", + "integrity": "sha512-+UTjEEQlvT4+IIwLpN36Qb1DOQHe3zHkvIVe6SjLln+Z/UEK6NhMI0tsJNbiW38WAfwOjJ+otrRBHuD93SBRxQ==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-buffer-from": "3.188.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/invalid-dependency": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.198.0.tgz", + "integrity": "sha512-lbwS+H7WYk/g9/nHoTgt7xkrZCJ/OJuBfsx41RvMxW7zPxJeHYD/PvgPvYOB9lTUBkr7SDCeMoS5PtGdAwVOfg==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/is-array-buffer": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.188.0.tgz", + "integrity": "sha512-n69N4zJZCNd87Rf4NzufPzhactUeM877Y0Tp/F3KiHqGeTnVjYUa4Lv1vLBjqtfjYb2HWT3NKlYn5yzrhaEwiQ==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-content-length": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.199.0.tgz", + "integrity": "sha512-Q76J6xZl36tqS401TGs/NPIu8lYbNG1EtqxM88CWe/u0SH+D4LIR9AMXq9c4PH0ldIMWAGVGbRLLc0/H3rPyBg==", + "optional": true, + "requires": { + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-endpoint": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.198.0.tgz", + "integrity": "sha512-J/rQkIXUbFJAlD6LSDVGU4bGbwD/2pvF5N39ePzvaJ8SwV9Y78XER/2fIAERhFNppuYinGdBdMLiPsC6qPT6ZA==", + "optional": true, + "requires": { + "@aws-sdk/middleware-serde": "3.198.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/signature-v4": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/url-parser": "3.198.0", + "@aws-sdk/util-config-provider": "3.188.0", + "@aws-sdk/util-middleware": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-host-header": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.198.0.tgz", + "integrity": "sha512-keHstrdw0bFzEkUrkMQ9+UxaKu5b1K87cH6guqLf4JBo04CT+2kPRlDSma65XCi2U81zfTnWApk+/SPPFN3otA==", + "optional": true, + "requires": { + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-logger": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.198.0.tgz", + "integrity": "sha512-IFvNO4MI80FyltPzrEpYHMG47EYXawcD5zTzcbimpeLTpyrLY/zkSJqh5cVFu+NcDWsuD6U1geuvfN+i+2Bg1Q==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-recursion-detection": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.198.0.tgz", + "integrity": "sha512-VHyz5xBJOaLZwdL94XWB04XCA+pwbURy+4ESF66vIY1umWgfanbZPkvw1XlRaQJydOmyIDFqhNG2AzB28WN9iw==", + "optional": true, + "requires": { + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-retry": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.198.0.tgz", + "integrity": "sha512-dwv5QJYTPNkmjKcQ0RtClkNumFomECzxjXvSiyjD9Ft6AWHcUeyqJfGKbmP5mFHpezWckK1qcT6cPMVrJilgjw==", + "optional": true, + "requires": { + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/service-error-classification": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-middleware": "3.198.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + } + }, + "@aws-sdk/middleware-sdk-sts": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.199.0.tgz", + "integrity": "sha512-ISM3Lx1AM2IiHpcQPdwHHvnW/dRyC/jGy2fHQvmYxj8x2oIYnEXxk4vA7DFnrYupxwi2yTSp3k8On2+1VgMjiw==", + "optional": true, + "requires": { + "@aws-sdk/middleware-signing": "3.198.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/signature-v4": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-serde": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.198.0.tgz", + "integrity": "sha512-RlAua2691KCFabp3kjnsd5p+1nQbULTK1Ia/jvlTAyG4tGOeA0x1At6KZoI1LfkN+VjstV5/3b9aOCtcFuxkhA==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-signing": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.198.0.tgz", + "integrity": "sha512-HPY9d1c1CUiV6JBVxiiQQgYfmELl1cn6h0TI00EmOAM5/wxUoiYBX2cGWf2NRF9/iBTppZjxwAKMYPIqF5Tkvw==", + "optional": true, + "requires": { + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/signature-v4": "3.198.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-middleware": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-stack": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.198.0.tgz", + "integrity": "sha512-5mHRjiJFHxziXOiChW3kttQHjgqH5qW9xRIDJepyf+NRJ60L8bZj0t8oGecqVqo27S02+UvrFgOzoRvBbATVFw==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-user-agent": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.198.0.tgz", + "integrity": "sha512-SMteVixqoSazxUN1ROMj+nSf/zgTMRVPaTCKU0iEAtrE7ilp9Xv6FEC7ffm1MM9xIoAZ2eY1eAtY3uN0yxBm4A==", + "optional": true, + "requires": { + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/node-config-provider": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.198.0.tgz", + "integrity": "sha512-W+msdp94ZjR8mJMtGPHjWHsIdsOu3HaVX4x+AQq9cj7+pg/D5CvWw7fnbkUQeG+V8Ia/aqzBNxlUpr/FAeQY/g==", + "optional": true, + "requires": { + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/shared-ini-file-loader": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/node-http-handler": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.199.0.tgz", + "integrity": "sha512-F+6T7MHHm0b3+GVRxEnFCuIyqUQb0b8a3Hne3QFV4cxtnX58O/SSF8KlpuGZwobivdRC/AKDaTdI/eA0PQfegA==", + "optional": true, + "requires": { + "@aws-sdk/abort-controller": "3.198.0", + "@aws-sdk/protocol-http": "3.198.0", + "@aws-sdk/querystring-builder": "3.199.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/property-provider": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.198.0.tgz", + "integrity": "sha512-jnQeJgZlk+6YJS2/eFz6pm9+XHzvCB0jTxHBwt2zYwZfcJ98viRQWMYfkY1XsemuQb/uIoHRBRhFXaJSLpXVDQ==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/protocol-http": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.198.0.tgz", + "integrity": "sha512-x+Qc+kwYqaZvLJ/820rxoFUIgSnSS/XlUHwmS+CTn7nJ68CeL3dzmae6TVOslpVBLCvoS2CbEpEoBbofOpsbGw==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/querystring-builder": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.199.0.tgz", + "integrity": "sha512-P4MWPzCqtH3sgI9iXXVdYirYVgggtg4uq5MVefnfHW+osZu8ZR+UKJw5ojAFfOCqcnKOU/xJjz185RroOjrzYQ==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-uri-escape": "3.188.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/querystring-parser": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.198.0.tgz", + "integrity": "sha512-oMybZYINxNiwSELR7tOwqu+1S7CeEC3g5L4IQXk2wvVx96HEf3sQgLr1wbmV1b7lEnTuH9OrgI5RgDUBVqipdw==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/service-error-classification": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.198.0.tgz", + "integrity": "sha512-bVsWOIYuDtSmwJtPF1pU84x2TL20Pj02C0+/6ua4qLvRatVKFbj1wxWiU/nKvgjiGFX8VWuQUKMzXUYQfYn4nw==", + "optional": true + }, + "@aws-sdk/shared-ini-file-loader": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.198.0.tgz", + "integrity": "sha512-n3Ykuvtb6f+WQuhcMVumY9VxQwPp8+cMSc5s6YHptkvZkz/cd2wmPhO914gKE/i2MoC/zQsFCXT8Z1YnS7k8sA==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/signature-v4": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.198.0.tgz", + "integrity": "sha512-8EIyEt7ElTK/tQamYyB16IGwc7EwtLlSVcksaiII780ZtYULnOjogi/UImCYqSejQw+EHhXfbj14HRQT56rqEQ==", + "optional": true, + "requires": { + "@aws-sdk/is-array-buffer": "3.188.0", + "@aws-sdk/types": "3.198.0", + "@aws-sdk/util-hex-encoding": "3.188.0", + "@aws-sdk/util-middleware": "3.198.0", + "@aws-sdk/util-uri-escape": "3.188.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/smithy-client": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.198.0.tgz", + "integrity": "sha512-IKUzJSoIkxYkYpRdlrh6REtDcW5c87FKeqtMC8VTpaTxrXwnJOqbenp7IwArwOnbXp4aIVmzdxT/nvQrftlgWg==", + "optional": true, + "requires": { + "@aws-sdk/middleware-stack": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/types": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.198.0.tgz", + "integrity": "sha512-ljgY9Pgb2CSRrf4IeaNy5gkhTsBae9STKc/mqfScSzvZOvRHu+BOIAGM33fDoCwxD1viKNVJvU1KemiI57Gbvw==", + "optional": true + }, + "@aws-sdk/url-parser": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.198.0.tgz", + "integrity": "sha512-wm3+OTDWKsMEOlLGvJ+jxCcOXMjgd5qBDVbu2bTiyTahc2poNlM7kKhSwL4I8PkmGZVAqfAlHD4Wj38WecHQPw==", + "optional": true, + "requires": { + "@aws-sdk/querystring-parser": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-base64-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.188.0.tgz", + "integrity": "sha512-qlH+5NZBLiyKziL335BEPedYxX6j+p7KFRWXvDQox9S+s+gLCayednpK+fteOhBenCcR9fUZOVuAPScy1I8qCg==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-base64-node": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.188.0.tgz", + "integrity": "sha512-r1dccRsRjKq+OhVRUfqFiW3sGgZBjHbMeHLbrAs9jrOjU2PTQ8PSzAXLvX/9lmp7YjmX17Qvlsg0NCr1tbB9OA==", + "optional": true, + "requires": { + "@aws-sdk/util-buffer-from": "3.188.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-body-length-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz", + "integrity": "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-body-length-node": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.188.0.tgz", + "integrity": "sha512-XwqP3vxk60MKp4YDdvDeCD6BPOiG2e+/Ou4AofZOy5/toB6NKz2pFNibQIUg2+jc7mPMnGnvOW3MQEgSJ+gu/Q==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-buffer-from": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.188.0.tgz", + "integrity": "sha512-NX1WXZ8TH20IZb4jPFT2CnLKSqZWddGxtfiWxD9M47YOtq/SSQeR82fhqqVjJn4P8w2F5E28f+Du4ntg/sGcxA==", + "optional": true, + "requires": { + "@aws-sdk/is-array-buffer": "3.188.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-config-provider": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.188.0.tgz", + "integrity": "sha512-LBA7tLbi7v4uvbOJhSnjJrxbcRifKK/1ZVK94JTV2MNSCCyNkFotyEI5UWDl10YKriTIUyf7o5cakpiDZ3O4xg==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-defaults-mode-browser": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.198.0.tgz", + "integrity": "sha512-IG4iVKQdFjdVFMH5KbSUY2l48wL9aCX/qzoCyTPjKkVumvmwnfkt5OCslkNcaqRdvp5o7QL7aHbq0EZ3K7Ya0A==", + "optional": true, + "requires": { + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-defaults-mode-node": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.198.0.tgz", + "integrity": "sha512-LBKSKJjEs0D8tjalblDNmq9DWYTDQ1wVUksAIBO2gQU+EZHJwPb9qxyAk32gbnVTOYceZpJ5/vAGT7speDzEyw==", + "optional": true, + "requires": { + "@aws-sdk/config-resolver": "3.198.0", + "@aws-sdk/credential-provider-imds": "3.198.0", + "@aws-sdk/node-config-provider": "3.198.0", + "@aws-sdk/property-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-endpoints": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.198.0.tgz", + "integrity": "sha512-fpeJNVoe/QsIcGybgJ+D2jZcUFi7d37FlMiZd9eVnS5LyMGDNH8tVS7aPT7dgb0z30/FKMBIKKG6QxDGxFaqjQ==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-hex-encoding": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.188.0.tgz", + "integrity": "sha512-QyWovTtjQ2RYxqVM+STPh65owSqzuXURnfoof778spyX4iQ4z46wOge1YV2ZtwS8w5LWd9eeVvDrLu5POPYOnA==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-locate-window": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.188.0.tgz", + "integrity": "sha512-SxobBVLZkkLSawTCfeQnhVX3Azm9O+C2dngZVe1+BqtF8+retUbVTs7OfYeWBlawVkULKF2e781lTzEHBBjCzw==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-middleware": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.198.0.tgz", + "integrity": "sha512-hEdkuGRWhZdEb1plzkGCN2kT8SqiPrEQHngB+1q7pjFJcKWkYkmaLHGw2zhbg1EVNpcGmj5DzCSWzwoPkpDRsw==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-uri-escape": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.188.0.tgz", + "integrity": "sha512-4Y6AYZMT483Tiuq8dxz5WHIiPNdSFPGrl6tRTo2Oi2FcwypwmFhqgEGcqxeXDUJktvaCBxeA08DLr/AemVhPCg==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-user-agent-browser": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.198.0.tgz", + "integrity": "sha512-XIwaaKtrEsxsayk1yUNjx15AZenP6YRaRDa3f6dhGO+D6OOXP+0S38O5lakyDDGW7nkwkmXa2NIv/OPHPYJ+jQ==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.198.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-user-agent-node": { + "version": "3.198.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.198.0.tgz", + "integrity": "sha512-21bi3pNO7jvo3l9LtMJyR48ERN69PuBqMnwnjsDVqyIFBbnZr/JR5rWQx7jdZ0iUt6mRlgZ17xHXlGUGMCxznA==", + "optional": true, + "requires": { + "@aws-sdk/node-config-provider": "3.198.0", + "@aws-sdk/types": "3.198.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-utf8-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz", + "integrity": "sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-utf8-node": { + "version": "3.199.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.199.0.tgz", + "integrity": "sha512-Kk3qCdGbe5k0PUE8EBgMsRxNstvDCoWStYWjNwsHWuc/hJitSf44PColzXw6xxHqH1sY+6LcgIaMwJZ5C4bB6w==", + "optional": true, + "requires": { + "@aws-sdk/util-buffer-from": "3.188.0", + "tslib": "^2.3.1" + } + }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + }, + "@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + }, + "@types/node": { + "version": "18.11.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.8.tgz", + "integrity": "sha512-uGwPWlE0Hj972KkHtCDVwZ8O39GmyjfMane1Z3GUBGGnkZ2USDq7SxLpVIiIHpweY9DS0QTDH0Nw7RNBsAAZ5A==" + }, + "@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + }, + "@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "requires": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "aws-sign": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/aws-sign/-/aws-sign-0.2.0.tgz", + "integrity": "sha512-6P7/Ls5F6++DsKu7iacris7qq/AZSWaX+gT4dtSyUxM82ePxWxaP7Slo82ZO3ZTx6GSKxQHAQlmFvM8e+Dd8ZA==" + }, + "backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", + "requires": { + "precond": "0.2" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" + }, + "bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==" + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha512-bYeph2DFlpK1XmGs6fvlLRUN29QISM3GBuUwSFsMY2XRx4AvC0WNCS57j4c/xGrK2RS24C1w3YoBOsw9fT46tQ==", + "requires": { + "callsite": "1.0.0" + } + }, + "bintrees": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", + "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==" + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "boom": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-0.3.1.tgz", + "integrity": "sha512-xWrlXnkK46TjEW7HU5G39AXWuG5aiHz3++zk3bBzF4mfnVCkpcYbwsnLUqMmfZNgPEYS/AI8MH+vmJxH5Kz0PA==", + "requires": { + "hoek": "0.4.x" + }, + "dependencies": { + "hoek": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.4.2.tgz", + "integrity": "sha512-Yj/N2TCrS0d8jvZgUpq9sDNt8/ABwTxPJW4+8QT0KXCMxOtRfUCUTEZEYyvMSgfDT3MGvwgO+NHfWPobagAIug==" + } + } + }, + "bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "bson": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.0.tgz", + "integrity": "sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==", + "requires": { + "buffer": "^5.6.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "client": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client/-/client-0.0.1.tgz", + "integrity": "sha512-XjoueeoiUNMrH0BGD/joA1RNxhzw5aGhRo15MmdPDV6RWCcUeKRBXrcH1qJNTepOxDwLAZbyLy0Owvw3V9jYxg==", + "requires": { + "backoff": "^2.4.0", + "cookie": "^0.1.2", + "getenv": "~0.3.0", + "q": "~0.9.7", + "restler": "~2.0.1", + "socket.io-client": "~1.0.6", + "underscore": "^1.6.0", + "winston": "^0.7.3" + }, + "dependencies": { + "after": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz", + "integrity": "sha512-SuI3vWhCFeSmkmmJ3efyuOkrhGyp/AuHthh3F5DinGYh2kR9t/0xUlm3/Vn2qMScfgg+cKho5fW7TUEYUhYeiA==" + }, + "arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha512-6ZjfQaBSy6CuIH0+B0NrxMfDE5VIOCP/5gOqSpEIsaAZx9/giszzrXg6PZ7G51U/n88UmlAgYLNQ9wAnII7PJA==" + }, + "base64-arraybuffer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz", + "integrity": "sha512-ewBKKVVPIl78B26mYQHYlaxR7NydMiD/GxwLNIwTAfLIE4xhN2Gxcy30//azq5UrejXjzGpWjcBu3NUJxzMMzg==" + }, + "blob": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.2.tgz", + "integrity": "sha512-BoCcDt8zBGShn6DawAGQw37s9SSs+fEjiZWDzyB+841PbOogcR2X7LGlM4sR3Zsiq/zoyl8MFWDfN6oDSlveBQ==" + }, + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha512-YhIbp3PJiznERfjlIkK0ue4obZxt2S60+0W8z24ZymOHT8sHloOqWOqZRU2eN5OlY8U08VFsP02letcu26FilA==" + }, + "cookie": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.5.tgz", + "integrity": "sha512-/lhu+NGBI5pOLXILS07DrPXYX0QDD/ejVhbwoCUcLPBqMEK9b++f9rUhAlhLkcTz9mV6QSeD+w3cHJ96rMZaFQ==" + }, + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha512-EohAb3+DSHSGx8carOSKJe8G0ayV5/i609OD0J2orCkuyae7SyZSz2aoLmQF2s0Pj5gITDebwPH7GFBlqOUQ1Q==" + }, + "engine.io-client": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.3.1.tgz", + "integrity": "sha512-bTOZMqAe7HXhyA/2T7Fve04b/ZZruTHSOqa+yn8U4RFSyRAVPePjopOgJOUNciEfuXo1gx850P5LzaQU28/p3w==", + "requires": { + "component-emitter": "1.1.2", + "component-inherit": "0.0.3", + "debug": "0.7.4", + "engine.io-parser": "1.0.6", + "has-cors": "1.0.3", + "indexof": "0.0.1", + "parsejson": "0.0.1", + "parseqs": "0.0.2", + "parseuri": "0.0.2", + "ws": "0.4.31", + "xmlhttprequest": "https://github.com/LearnBoost/node-XMLHttpRequest/archive/0f36d0b5ebc03d85f860d42a64ae9791e1daa433.tar.gz" + } + }, + "engine.io-parser": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.0.6.tgz", + "integrity": "sha512-ipbmiNj4OfAL9csof0FlI9L2jkU/lgcUphHjnTDo1KABsA21WtsVy/1OjhCj8xxhNIHtxEZ3/t7uB45gEMhD4g==", + "requires": { + "after": "0.8.1", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.2", + "blob": "0.0.2", + "utf8": "2.0.0" + } + }, + "has-cors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.0.3.tgz", + "integrity": "sha512-Mxk1ba23PNtB3zPigreijApS3uuH9bhgZkqQtLQj7ydWHsGeb9uOtk4gsK6mZj4rYG6VNS/CT9G1XkYfgItpKg==", + "requires": { + "global": "https://github.com/component/global/archive/v2.0.1.tar.gz" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "parseqs": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz", + "integrity": "sha512-vyyyfQGUFZnDhgrrdn+hh1JuOfvbXU5oRr6dijfkSIbaFuxGgTSCA/RNVcsADmo0k2NX6wERVTMKkXokjuObJA==", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.2.tgz", + "integrity": "sha512-m0H+R0u5LXOx8sbxufnvgKrRLpkVpvtMf0AyWXYSqLwo2MWrVEgCIbgpaSVa398xl6wTLe0A7CGhiC4hBdEzHQ==", + "requires": { + "better-assert": "~1.0.0" + } + }, + "socket.io-client": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.0.6.tgz", + "integrity": "sha512-itdtz6fQBTFIDBP4+hJox0OlT+SbCVdENjPgjMup3ehu7OsiG6t0FYBXCx+k/upt9lbeyp9BmUNNi5EfnGa5Vw==", + "requires": { + "component-bind": "1.0.0", + "component-emitter": "1.1.2", + "debug": "0.7.4", + "engine.io-client": "1.3.1", + "has-binary-data": "0.1.1", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.2", + "socket.io-parser": "2.2.0", + "to-array": "0.1.3" + } + }, + "socket.io-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.0.tgz", + "integrity": "sha512-uW3UiLVibAyleKq8r/yZe1oPO51olhY18T6HtnN0iI6RLqJfYC0YiyAFlsPw1+8I0Z1qFd8jFLTRZo2vr6ISxA==", + "requires": { + "debug": "0.7.4", + "emitter": "http://github.com/component/emitter/archive/1.0.1.tar.gz", + "isarray": "0.0.1", + "json3": "3.2.6" + } + }, + "to-array": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.3.tgz", + "integrity": "sha512-JQk/QMS4oHyU2VufVeyjN25dcnZnr1PV1pa1oKSj7l5tVO9WrU62og3fYzB3mrgJZZgBxdrrA/v6iZzMDuyFYw==" + }, + "ws": { + "version": "0.4.31", + "resolved": "https://registry.npmjs.org/ws/-/ws-0.4.31.tgz", + "integrity": "sha512-mWiVQ9qZGPXvLxQ4xGy58Ix5Bw0L99SB+hDT8L59bty4fbnQczaGl4YEWR7AzLQGbvPn/30r9/o41dPiSuUmYw==", + "requires": { + "commander": "~0.6.1", + "nan": "~0.3.0", + "options": ">=0.0.5", + "tinycolor": "0.x" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==" + }, + "combined-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha512-qfexlmLp9MyrkajQVyjEDb0Vj+KhRgR/rxLiVhaihlT+ZkX0lReqtH6Ack40CvMDERR4b5eFp3CreskpBs1Pig==", + "requires": { + "delayed-stream": "0.0.5" + } + }, + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha512-0fLycpl1UMTGX257hRsu/arL/cUbcvQM4zMKwvLvzXtfdezIV4yotPS2dYtknF+NmEfWSoCEF6+hj9XLm/6hEw==" + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==" + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-jar": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/cookie-jar/-/cookie-jar-0.2.0.tgz", + "integrity": "sha512-yImk9AY90xjoUsN2fWHoIhVgveXqiZv7LDqUTZEzVBHyzfay8AjcJITUZpz2fTYLh6rnP+7GogiuRCo/5j2epg==" + }, + "cookie-session": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cookie-session/-/cookie-session-2.0.0.tgz", + "integrity": "sha512-hKvgoThbw00zQOleSlUr2qpvuNweoqBtxrmx0UFosx6AGi9lYtLoA+RbsvknrEX8Pr6MDbdWAb2j6SnMn+lPsg==", + "requires": { + "cookies": "0.8.0", + "debug": "3.2.7", + "on-headers": "~1.0.2", + "safe-buffer": "5.2.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "requires": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + } + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cryptiles": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.1.0.tgz", + "integrity": "sha512-WiOGszxSaVHd8T4hlu5Xcqs2uUYxbvotBP171ag2pLPKSwSKeTJYnzd98/YWV3jQYk/rpMHa3r01cQfN8SZrHQ==", + "requires": { + "boom": "0.3.x" + } + }, + "crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==" + }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "delayed-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha512-v+7uBd1pqe5YtgPacIIbZ8HuHeLFVNe4mUEyFDXL6KiqzEykjbw+5mXZXpGFgNVasdL4jWKgaKIXrEHiynN1LA==" + }, + "denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "requires": { + "jake": "^10.8.5" + } + }, + "emitter": { + "version": "http://github.com/component/emitter/archive/1.0.1.tar.gz", + "integrity": "sha512-k3Da+QreMb9waaGCHNAHox5QqxnZEYlQmvIVYwQibrI6OpIRyIIyFGgDV5dXRLr1AJ32JLqEh0VxQEq20dFskw==", + "requires": { + "indexof": "0.0.1" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "engine.io": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "dependencies": { + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==" + }, + "fast-xml-parser": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz", + "integrity": "sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==", + "optional": true, + "requires": { + "strnum": "^1.0.5" + } + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "forever-agent": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.2.0.tgz", + "integrity": "sha512-IasWSRIlfPnBZY1K9jEUK3PwsScR4mrcK+aNBJzGoPnW+S9b6f8I8ScyH4cehEOFNqnjGpP2gCaA22gqSV1xQA==" + }, + "form-data": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.0.10.tgz", + "integrity": "sha512-Z9/PpT/agxXi80nMpOH6GFD7XOr6mwk5aWMxDt/KMY+Nm7e4FnRMjddM4/mLPJhpmp6alY1F/1JQpRE6z07xng==", + "requires": { + "async": "~0.2.7", + "combined-stream": "~0.0.4", + "mime": "~1.2.2" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" + }, + "mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw==" + } + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "getenv": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-0.3.0.tgz", + "integrity": "sha512-E5JuanH2c71x2d24Pg9WpQMs0YpbiVPFBMNJtDC4M2VG+zPc3j3JvaoAD2dj9r/ERkw6Va19HBephneUyeENoQ==" + }, + "global": { + "version": "https://github.com/component/global/archive/v2.0.1.tar.gz", + "integrity": "sha512-O91OcV/NbdmQJPHaRu2ekSP7bqFRLWgqSwaJvqHPZHUwmHBagQYTOra29+LnzzG3lZkXH1ANzHzfCxtAPM9HMA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-binary-data": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/has-binary-data/-/has-binary-data-0.1.1.tgz", + "integrity": "sha512-XqIrqIgPlA2gxvHKudDsLJt8Xu8B4DvkHyUWGmLWYOAO0rFOL94Ds4NSveSZ1fCjWX22tQgIiRpDKAETex8GCQ==", + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + } + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "hawk": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-0.10.2.tgz", + "integrity": "sha512-BjpmnZ95odv7KOIsydfNTAxfGOGaVc6xbYL4fozWl45PWjDqskix0LHAekmGkpnrCAI6+AZRvJIXNTAllj+e6w==", + "requires": { + "boom": "0.3.x", + "cryptiles": "0.1.x", + "hoek": "0.7.x", + "sntp": "0.1.x" + } + }, + "hoek": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.7.6.tgz", + "integrity": "sha512-z75muWk69yyjWn6nNzJP0pnfgcewtSTs7uBolGUA7kWNdCYZukzHn3sYqUirhXul7qp9WBUwNT/7ieJZNveJqg==" + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + } + }, + "json-stringify-safe": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-3.0.0.tgz", + "integrity": "sha512-VSSuxEAawKLYlCabQOR7YDijQ69zPqQBOriUuCgNhlAqtU7RPr41gPpaSs6WkEu+ZOtUequpXWbI51CS+Z/gMQ==" + }, + "json3": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.2.6.tgz", + "integrity": "sha512-KA+GHhYTLTo7Ri4DyjwUgW8kn98AYtVZtBC94qL5yD0ZSYct8/eF8qBmTNyk+gPE578bKeIL4WBq+MUyd1I26g==" + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "kareem": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz", + "integrity": "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA==" + }, + "keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "requires": { + "tsscmp": "1.0.6" + } + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mongodb": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.11.0.tgz", + "integrity": "sha512-9l9n4Nk2BYZzljW3vHah3Z0rfS5npKw6ktnkmFgTcnzaXH1DRm3pDl6VMHu84EVb1lzmSaJC4OzWZqTkB5i2wg==", + "requires": { + "@aws-sdk/credential-providers": "^3.186.0", + "bson": "^4.7.0", + "denque": "^2.1.0", + "mongodb-connection-string-url": "^2.5.4", + "saslprep": "^1.0.3", + "socks": "^2.7.1" + } + }, + "mongodb-connection-string-url": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.4.tgz", + "integrity": "sha512-SeAxuWs0ez3iI3vvmLk/j2y+zHwigTDKQhtdxTgt5ZCOQQS5+HW4g45/Xw5vzzbn7oQXCNQ24Z40AkJsizEy7w==", + "requires": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + }, + "dependencies": { + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + } + } + }, + "mongoose": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.7.0.tgz", + "integrity": "sha512-Jt6NSiSpgcrSBzRb9+YwkpjjVuq4H532c4jbf+5Nu0wd/nIPHSOKhr8jnQZ8gQTdPjubF+szR5r6KMSqaY4/Wg==", + "requires": { + "bson": "^4.6.5", + "kareem": "2.4.1", + "mongodb": "4.11.0", + "mpath": "0.9.0", + "mquery": "4.0.3", + "ms": "2.1.3", + "sift": "16.0.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==" + }, + "mquery": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "requires": { + "debug": "4.x" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "nan": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-0.3.2.tgz", + "integrity": "sha512-V9/Pyy5Oelv6vVJP9X+dAzU3IO19j6YXrJnODHxP2h54hTvfFQGahdsQV6Ule/UukiEJk1SkQ/aUyWUm61RBQw==" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha512-TkCET/3rr9mUuRp+CpO7qfgT++aAxfDRaalQhwPFzI9BY/2rCDn6OfpZOVggi1AXfTPpfkTrg5f5WQx5G1uLxA==" + }, + "oauth-sign": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.2.0.tgz", + "integrity": "sha512-4DtiD64CwPJ5vZ636j/KtM7DxWbX1KlkqwbqbEAxI3BCpBrQdrKOv8vC/36U6gfm1CVapy6QmcVxPnXPPQApTA==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha512-S0sN3agnVh2SZNEIGc0N1X4Z5K0JeFbGBrnuZpsxuUh5XLF0BnvWkMjRXo/zGKLd/eghvNIKcx1pQkmUjXIyrA==" + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg==" + }, + "parsejson": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz", + "integrity": "sha512-W9CRvTfYQY/kbRc5Q6YTWarb/QDxdEGbd6RCP8CLUQDJV89RVHoS2A0dZYNtAcq31fulGNN4ZhAhiQQazwlKJg==", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==" + }, + "precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + }, + "prom": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/prom/-/prom-0.0.3.tgz", + "integrity": "sha512-OghtgULoL3MuVNhZZCbCv55EgBpLj3lGH7m8qIdE2wbpQTPtUbA8S6K/toS5RxmjzL3nT7Iz7uypm4v1KGsM7A==" + }, + "prom-client": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.1.0.tgz", + "integrity": "sha512-iFWCchQmi4170omLpFXbzz62SQTmPhtBL35v0qGEVRHKcqIeiexaoYeP0vfZTujxEq3tA87iqOdRbC9svS1B9A==", + "requires": { + "tdigest": "^0.1.1" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "q": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/q/-/q-0.9.7.tgz", + "integrity": "sha512-ijt0LhxWClXBtc1RCt8H0WhlZLAdVX26nWbpsJy+Hblmp81d2F/pFsvlrJhJDDruFHM+ECtxP0H0HzGSrARkwg==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "request": { + "version": "2.16.6", + "resolved": "https://registry.npmjs.org/request/-/request-2.16.6.tgz", + "integrity": "sha512-TfD4kMo40kwuOpO7GYfAZpb2wYdw7yvTIglPNgPPSmp2Fz6MKNvPLla40FQ/ypdhy6B2jRNz3VlCjPD6mnzsmA==", + "requires": { + "aws-sign": "~0.2.0", + "cookie-jar": "~0.2.0", + "forever-agent": "~0.2.0", + "form-data": "~0.0.3", + "hawk": "~0.10.2", + "json-stringify-safe": "~3.0.0", + "mime": "~1.2.7", + "node-uuid": "~1.4.0", + "oauth-sign": "~0.2.0", + "qs": "~0.5.4", + "tunnel-agent": "~0.2.0" + }, + "dependencies": { + "mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw==" + }, + "qs": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz", + "integrity": "sha512-KbOrQrP5Ye+0gmq+hwxoJwAFRwExACWqwxj1IDFFgqOw9Poxy3wwSbafd9ZqP6T6ykMfnxM573kt/a4i9ybatQ==" + } + } + }, + "restler": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/restler/-/restler-2.0.1.tgz", + "integrity": "sha512-j2gyQdGeFPKl8FRbFJ/XR7yCmL31pxD9l+zTcwZ2m7e8psU46X2lJ20GCsEFJD4rxtAaswzGJtKQhNLYFFtN0g==" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "sift": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz", + "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ==" + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, + "sntp": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.1.2.tgz", + "integrity": "sha512-6fsOpJYQAQcO/UeW7T9mJwEenJymdU77o+gNiompGAammlSa+C49Oyt79ta/kgVbT13l4JAuKlo8FNvUnVjvEQ==", + "requires": { + "hoek": "0.4.x" + }, + "dependencies": { + "hoek": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.4.2.tgz", + "integrity": "sha512-Yj/N2TCrS0d8jvZgUpq9sDNt8/ABwTxPJW4+8QT0KXCMxOtRfUCUTEZEYyvMSgfDT3MGvwgO+NHfWPobagAIug==" + } + } + }, + "socket.io": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", + "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" + }, + "socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "optional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "tdigest": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", + "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", + "requires": { + "bintrees": "1.0.2" + } + }, + "tinycolor": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz", + "integrity": "sha512-+CorETse1kl98xg0WAzii8DTT4ABF4R3nquhrkIbVGcw1T8JYs5Gfx9xEfGINPUZGDj9C4BmOtuKeaTtuuRolg==" + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "optional": true + }, + "tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" + }, + "tunnel-agent": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.2.0.tgz", + "integrity": "sha512-PXy4q1PH88BK0pcGOEMXFAslyBuRWz1wxLfPXTlYFd41eyUgjOALaVGbWJN1ymjbnBzjWunVSKmrrMMh8oLaZA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "utf8": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.0.0.tgz", + "integrity": "sha512-jWXHr+bQ8RsWazLzVY3V7XACPTbBHYSg/VoDVok+DBQk5ULm0AuBCNb9tGmjq2H+znnkBFwjhzzCbn9G3xlYcA==" + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + } + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "optional": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "winston": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.7.3.tgz", + "integrity": "sha512-iVTT8tf9YnTyfZX+aEUj2fl6WBRet7za6vdjMeyF8SA80Vii2rreM5XH+5qmpBV9uJGj8jz8BozvTDcroVq/eA==", + "requires": { + "async": "0.2.x", + "colors": "0.6.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "pkginfo": "0.3.x", + "request": "2.16.x", + "stack-trace": "0.0.x" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" + } + } + }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "requires": {} + }, + "xmlhttprequest": { + "version": "https://github.com/LearnBoost/node-XMLHttpRequest/archive/0f36d0b5ebc03d85f860d42a64ae9791e1daa433.tar.gz", + "integrity": "sha512-TVSZwoeUQ7OKhb8jnQdSxGFz+lm4MGWmhG0deeYg85VQT74x5LcSrKeXHE0ZIzEycgqQ5mF8r8e1AykA7TpNAQ==" + } + } +} diff --git a/application/package.json b/application/package.json new file mode 100644 index 0000000..760a085 --- /dev/null +++ b/application/package.json @@ -0,0 +1,24 @@ +{ + "name": "panic", + "version": "1.0.0", + "description": "", + "main": "server.js", + "start": "node server.js", + "author": "", + "license": "ISC", + "dependencies": { + "bcryptjs": "^2.4.3", + "client": "^0.0.1", + "cookie-session": "^2.0.0", + "cors": "^2.8.5", + "crypto": "^1.0.1", + "ejs": "^3.1.8", + "express": "^4.18.2", + "jsonwebtoken": "^8.5.1", + "mongoose": "^6.7.0", + "path": "^0.12.7", + "prom": "^0.0.3", + "prom-client": "13.0.0", + "socket.io": "^4.5.3" + } +} diff --git a/application/server.cert b/application/server.cert new file mode 100644 index 0000000..3e78252 --- /dev/null +++ b/application/server.cert @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDrTCCApWgAwIBAgIUeZvTdnxsQriU0XZv73NeLAYxVyMwDQYJKoZIhvcNAQEL +BQAwZjELMAkGA1UEBhMCREUxCzAJBgNVBAgMAkJXMRMwEQYDVQQHDApSZXV0bGlu +Z2VuMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMM +CWxvY2FsaG9zdDAeFw0yMjExMDgxNDQ4MTBaFw0yMjEyMDgxNDQ4MTBaMGYxCzAJ +BgNVBAYTAkRFMQswCQYDVQQIDAJCVzETMBEGA1UEBwwKUmV1dGxpbmdlbjEhMB8G +A1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRIwEAYDVQQDDAlsb2NhbGhv +c3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+sFGHtNAjbpnlkt4C +XcDI2W5EfOKOxkx2jgdMyDwESUEkCt9R5s7gODw2GyACy6ihwW/ffcHzxCoPq9rV +Bf6hiyZ9z/SzA31r+P86AsY3ANC6d1YIaPOOSTUpqqYcHal1oWCLpUn5tbX0pZW3 +/bO8L4tiGcTL25Fea+y0TGeXP2zXT4GFeGHAscybca4nL210/RQQJxy5A0my5se9 +9YKYHPjPlwkcnTvmP4KVfUm5Mf4mjM14yK/FeYhZiiXqWluz9oN1bHmnA+glp2pH +I6X4sqXyWXvTblgrwX87yCha5Saj10E0zXC0fXqXsIQmC4JzCTr8sgds++AZD+K5 +eC25AgMBAAGjUzBRMB0GA1UdDgQWBBToWFjWPilqlBRWejzB2RV3r78MBTAfBgNV +HSMEGDAWgBToWFjWPilqlBRWejzB2RV3r78MBTAPBgNVHRMBAf8EBTADAQH/MA0G +CSqGSIb3DQEBCwUAA4IBAQAghc3T0wJTyrSwiRDZYMoodlXwdWPiGvX7zU6nIW9s +8MvR47RF34j7rir862IynKmO5h1WC+XYrfUKHt4MDCwUnIRW3hJ57bs7uPxR6f1d +KoIAOSsec/QdWieFwLEBUL8G6Pnt2wM73KriGEtw2JV/EDN4KuOAdX6nGjsFggz3 +Qp6QiNndtQr2gkkOc6uPU8SfcjWdfJe7KSTCYCGCi8aQVXM83bS4u/RtBG54cxLE +yciO9o43o5g9XS0d87HHm1C+GBGN9HbTyO9SfTeJ47JgM38spimXkyR0eFLTt1Ye +ppcaheOOjmU6QtyO0Fq1Cz5AmTN1BsruVU792Zfxk0ze +-----END CERTIFICATE----- diff --git a/application/server.js b/application/server.js new file mode 100644 index 0000000..977aad7 --- /dev/null +++ b/application/server.js @@ -0,0 +1,127 @@ +//Imports +const express = require('express') +const cors = require('cors') +const cookieSession = require('cookie-session') +const path = require('path') +const ejs = require('ejs') +const app = express() +const https = require('https') +const fs = require('fs') +var key = fs.readFileSync(__dirname + '/server.key') +var cert = fs.readFileSync(__dirname + '/server.cert') +const {writeFile} = require('fs') +const Metrics = require('./metrics') + + +const credentials = { + key: key, + cert: cert +} + +const server = https.createServer(credentials,app); +const { Server } = require("socket.io"); +const { count } = require('console') +const io = new Server(server); + + +//Setting up Cross Origin +var corsOption = { + origin: "http://localhost:3001" +} + +//Setting up Middle to use +app.use(cors(corsOption)) + +app.use(express.json()) + +app.use(express.urlencoded({ extended: true })); + +app.use( + cookieSession({ + name: "Cloud-Chat-User", + secret: "faSFasF12131!", + httpOnly: true + }) + ); + + +app.set(path.join(__dirname, '/app')) +//setting the view engine to html +app.engine('html', ejs.renderFile) +app.set('view engine', 'html') +//setting the path +app.use(express.static(path.join(__dirname, "/app"))); + + +//importing the user model +const db = require(path.join(__dirname,"/app/models")) + +//connceting to the Database +db.mongoose + .connect(`mongodb+srv://cici:cloudcomputing@cloud-computing.cl9pyt6.mongodb.net/?retryWrites=true&w=majority`, { + useNewUrlParser: true, + useUnifiedTopology: true + }) + .then(() => { + console.log("Successfully connect to MongoDB."); + }) + .catch(err => { + console.error("Connection error", err); + process.exit(); + }); + + +//setting up the endpoints +app.get('/start', (req,res) =>{ + res.render('register.html') +}) + +app.get('/login', (req,res) =>{ + res.render('login.html') +}) + +app.get('/index', (req, res) => { + res.sendFile(__dirname + '/index.html'); +}); + +//connecting to the socket +io.on('connection', (socket) => { + socket.on('chat message', (msg) => { + Metrics.msgSent.inc() + var length = msg.split(' ').filter(word=> word !=='').length + Metrics.msgLength.observe(length) + io.emit('chat message', msg); + }); + socket.on("upload", (file, callback) => { + console.log(file); + writeFile("/tmp/upload", file, (err) => { + callback({ message: err ? "failure" : "success" }); + }); + }); + +}); + + + + + +//Importing routes +require(path.join(__dirname,'/app/routes/auth.routes'))(app); +require(path.join(__dirname,'/app/routes/user.routes'))(app); + + +app.get('/metrics', async (req, res) => { + res.set('Content-Type', Metrics.register.contentType) + res.end(await Metrics.register.metrics()) +}) + +server.listen(3000, () => { + console.log('Server running on port 3000') +}) + + + + + + + diff --git a/application/server.key b/application/server.key new file mode 100644 index 0000000..a50f7c9 --- /dev/null +++ b/application/server.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC+sFGHtNAjbpnl +kt4CXcDI2W5EfOKOxkx2jgdMyDwESUEkCt9R5s7gODw2GyACy6ihwW/ffcHzxCoP +q9rVBf6hiyZ9z/SzA31r+P86AsY3ANC6d1YIaPOOSTUpqqYcHal1oWCLpUn5tbX0 +pZW3/bO8L4tiGcTL25Fea+y0TGeXP2zXT4GFeGHAscybca4nL210/RQQJxy5A0my +5se99YKYHPjPlwkcnTvmP4KVfUm5Mf4mjM14yK/FeYhZiiXqWluz9oN1bHmnA+gl +p2pHI6X4sqXyWXvTblgrwX87yCha5Saj10E0zXC0fXqXsIQmC4JzCTr8sgds++AZ +D+K5eC25AgMBAAECggEBAIHIxaTklqkW9N3AqSPZJYZOHnO0wApGwvIJ1sQWoGqW +ZSSf1cELo5AOFkUJDy935604V+k30ZMU1z/VStqj+tt+NtN4f2Z7oJilXyjfjIMR +Jf9Ti5WrwOD9yJY0VFxcf+LU1D4XYJL5bv802ALjRLp3bZl2SnApX/Zw5CkOu46/ +agZoCY8NafrAzd1xPKj0UsaBnOvMA/aiECIxN6FuVi+5zE8aX6LsjGLq4GJiBZjU +K+poVrl6XmugBZVJ3I+j2yYVd6wh/bXqIB2pSlvbcS8NAAbxbnMbVx9ACPRCQB3r +QN/ms8uIJ/9fv9tQoab48lHgLYjm6SjhcBZeNIYfRAECgYEA6ttPQWC4ox1SGIEE +C0VVKrGGNmg5JzaD/Yo5ntpStSSDRAMPcaHAD6rVCv5L1d8Z/iU1vNgkK/QKErRN +randg9DgcXSoJgYqanNSriRox7rNuL1BNec2btqckhETSTT6CLi9FJu5VZNPcWmE +QTTKpLhqaydpexXvL/8ZTZxjmYECgYEAz9sUhxArC7uYRCVcaYF0uSX7ewqiQPRV +4OhiFGP7vYw14grKgeApNG5LALS4KLPsV8c7+wgdhycUdlgHbxyzcTHXtu9CId6S +EkamBpiXufMWa+zM5aeoiB59Exz4pndVYuXRnUmA/nnkpArp7V9Ife+XR5ItZTd2 +g7Esiy7LADkCgYArLpvJ95C7XR7FJqOpttvL98wnoM4xaZKnQY0KqjXe3JHOJYnn +aMg5mT2Gwe8LqfPLiOfyiwNLmZloiwJlVgBGxlceRUbNhwCxhfbD0in5310IBLRC +xvp5M3TqXn1fToBSrjUF3wQaufU3cyFAJAbGdqoKfbqlSQkrmAn8/S5LAQKBgQDA +lAqA2MoJJNX+zV7Bod+zay2E4mVSKQ8oQiYdHkWvaKjDtZvKmRWULlvvW4EEtS7U +ZRN9khdJkTu0Kfs5Ry46QiPKqgJrvvs3U52fnuF0t3SeqddtL9lFxHm9q6n1Ebta +1fNP9zo8jFL6aeIyu4U+qS1Qcm78yFZVzWGn0sLigQKBgQCv/erzn3bE2Msf91We +o7OuZ211wE9qUrK+ha8QOC+OWOQcj3Kq02RfecXqHqCDyRi27y73nUAdseXya3KS +JFAIxOC0d3D6fdjCxLkSeznC6sj+2P1+yudDnHyAA9CscASz5m/OPQ2YM/Y5r9ek +oL1W35D4THX1bYqezwC3+vOpgg== +-----END PRIVATE KEY----- diff --git a/application/views/login.html b/application/views/login.html new file mode 100644 index 0000000..e3c8d53 --- /dev/null +++ b/application/views/login.html @@ -0,0 +1,51 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="UTF-8"/> + <meta name="viewport" content="width=dive-width, initial-scale=1.0"/> + <title>Login to Chat</title> + <style> + body {background-color:rgb(66, 66, 187); + width: 20%; + margin-left:auto; + margin-right:auto; + margin-top: 150px;} + input {width: 100%; + padding: 12px 20px; + margin: 8px 0; + box-sizing: border-box;} + input[type=submit]{ + font-family: Arial, Helvetica, sans-serif; + font-weight: bold; + width: 100%; + padding: 14px 20px; + margin: 8px 0; + border: none; + border-radius: 4px; + background-color: rgb(0, 128, 255); + } + input[type=submit]:hover { + background-color: #263c5c; + } + div{ + padding-top: 100px; + } + h2 { text-align: center; + color: white; + font-family: Arial, Helvetica, sans-serif; + + } + + + </style> + </head> + <body> + <body> + <h2>Login</h2> + <form action="/api/auth/signin", method="post"> + <input type="text" name="username" id="username" placeholder="Name" required /> + <input type="password" name="password" id="password" placeholder="Password " required/> + <input type="submit" value="Login"> + </form> + </body> + diff --git a/application/views/register.html b/application/views/register.html new file mode 100644 index 0000000..6f78e0a --- /dev/null +++ b/application/views/register.html @@ -0,0 +1,57 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="UTF-8"/> + <meta name="viewport" content="width=dive-width, initial-scale=1.0"/> + <title>Register User</title> + <style> + body {background-color:rgb(66, 66, 187); + width: 20%; + margin-left:auto; + margin-right:auto; + margin-top: 150px;} + input {width: 100%; + padding: 12px 20px; + margin: 8px 0; + box-sizing: border-box;} + input[type=submit]{ + font-family: Arial, Helvetica, sans-serif; + font-weight: bold; + width: 100%; + padding: 14px 20px; + margin: 8px 0; + border: none; + border-radius: 4px; + background-color: rgb(0, 128, 255); + } + input[type=submit]:hover { + background-color: #263c5c; + } + div{ + padding-top: 100px; + } + h2 { text-align: center; + color: white; + font-family: Arial, Helvetica, sans-serif; + + } + + + </style> + </head> + <body> + <h2>Register</h2> + <form action="/api/auth/signup", method="post"> + <input type="text" name="username" id="username" placeholder="Name" required /> <br> + <input type="email" name="email" id="email" placeholder="E-Mail " required /> <br> + <input type="password" name="password" id="password" placeholder="Password " required/> <br> + <input type="submit" value="Sign Up"> + </form> + <div> + <h2>Allready a Member?</h2> + <form action="/login", method="get"> + <input type="submit" value="Login"> + </form> + </div> + </body> +</html> \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e524de5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3" +services: + application: + build: + context: application + container_name: application + image: application + ports: + - "3000:3000" + prometheus: + container_name: prometheus-svc + image: prom/prometheus + ports: + - "9091:9090" + command: --config.file=/etc/prometheus/prometheus.yml + volumes: + - ./prometheus.yml:/etc/prometheus/prometheus.yml \ No newline at end of file diff --git a/prometheus.yml b/prometheus.yml new file mode 100644 index 0000000..00c6f68 --- /dev/null +++ b/prometheus.yml @@ -0,0 +1,11 @@ +global: + scrape_interval: 15s + evaluation_interval: 15s +scrape_configs: +- job_name: my-application + honor_labels: true + scheme: https + static_configs: + - targets: ['application:3000'] + tls_config: + insecure_skip_verify: true \ No newline at end of file -- GitLab